[EXCEL]identifier et ramener titre colonne from contenu cellule

identifier et ramener titre colonne from contenu cellule [EXCEL] - VB/VBA/VBS - Programmation

Marsh Posté le 16-05-2007 à 13:25:32    

Bonjour bonjour! :)
 
Une petit question (sûrement très bête):  :pt1cable:  
 
j'ai un fichier excel avec pour chaque ligne (qui correspondent à des dossiers que je traite) des dates inscrites dans différentes colonnes, genre "date réception", "date de réponse", "date de validation", "date de refus".
 
J'ai tout un paquet de colonnes, et pour rendre le classeur plus ergonomique, je voudrais créer deux colonnes au début du classeur récapitulant pour la première la "date de l'événement le plus récent" (je m'en suis tiré avec un max(toutes mes dates) )et pour la seconde "libellé de l'événement le plus récent".
 
Or pour cette colonne là, je n'arrive pas en fonction de ma date la plus récente à ramener le nom de la colonne dans laquelle est la date.
 
Le truc c'est que:
- d'une part sous excel je n'arrive pas à trouver de fonction qui me ramène le titre de la colonne si je n'ai que le contenu de la cellule et pas son identification  :??:  
 
- d'autre part sous VB je sais le faire, mais je ne voudrais pas avoir à exécuter une macro à chaque fois que je veux mettre à jour le fichier. Je voudrais que cela se fasse automatiquement.... vu que ce n'est pas moi qui vais utiliser le fichier à l'avenir.
 
 
quelqu'un aurait une idée de comment faire? :??:  :??:  
 
Coolkiwi

Reply

Marsh Posté le 16-05-2007 à 13:25:32   

Reply

Marsh Posté le 16-05-2007 à 15:39:15    

Bonjour,
 
Tu es tout proche de la solution,
 
transforme ta macro en function et appelle la dans ta cellule
exemple
Sub toto()
 
End Sub
 
en :
 
Function toto()
 
toto = resultat
End Function

Reply

Marsh Posté le 16-05-2007 à 16:34:18    

j'essaie de ce pas merci beaucoup!! ;)

Reply

Marsh Posté le 16-05-2007 à 17:24:38    

ok alors effectivement dans le principe ça marche  :)  
mais mon pb c'est que ça ne se met pas à jours tout seul...  :??:  
dans ma fonction j'ai:
 

Citation :

Function update(i)
 
For k = 6 To 63
If Cells(i, 5) = Cells(i, k) Then
update = Cells(5, k)
End If
 
Next
End Function


 
et dans mes cellules excel j'ai écrit:
pour la cellule sur la 8eme ligne  =update(8)
 
et il faut que je retape entrée pour que la cellule d'update, y a-t-il un moyen de faire autrement? :??:  
 
Kiwi

Reply

Marsh Posté le 17-05-2007 à 11:05:19    

Ok aors je pense avoir résolu la question en faisant un bouton auquel j'associe une marco qui me déroule ma fonction.
 
Ce n'est sûrement pas le plus élégant mais ça a l'air de marcher ;)
 
merci pour l'aide :)

Reply

Marsh Posté le 17-05-2007 à 11:12:25    

tu peux regarder du coté de l'évènement worksheet_change en ciblant une partie des tes cellules seulement.

Reply

Marsh Posté le 17-05-2007 à 12:07:45    

excusez moi mais j'ai encore une question mais cette fois c'est plus de la compréhension de "l'esprit du code" plutôt que du code lui même ;)
 
en gros dans la macro que j'ai associée à mon bouton j'ai ça:
 

Citation :

Sub mise_en_route_update()
 
Dim l, s, t As Integer
s = 5
 
Do Until (Cells(s, 2) = "" And Cells(s + 1, 2) = "" )
s = s + 1
Loop
t = s - 1
 For l = 8 To t
 
Cells(l, 5).Select
        ActiveCell.FormulaR1C1 = _
        "=MAX(RC[9]:RC[12],RC[15],RC[18],RC[19]:RC[23],RC[25]:RC[28],RC[31]:RC[32],RC[34]:RC[35],RC[37]:RC[38],RC[40]:RC[41],RC[43]:RC[44],RC[46]:RC[47],RC[49]:RC[50],RC[52],RC[57]:RC[58])"
Cells(l, 4).Select
ActiveCell = update(l)
     
    Next
 
End Sub


 
j'aimerais donc savoir si la partie en rouge, formulée telle quel, est une bonne chose ou pas.  
Est-ce quelquechose de fiable qui identifie bien chaque cellule à comparer ou bien c'est qqc qui se fait par positionnement relatif par rapport à la cellule que j'ai sélectionnée juste avant de demander à faire le max. (à savoir la cellule(l, 5) ) :??:  
 
Bon je reconnais que je prends peut etre un peu la tête mais c'est histoire d'avoir le code le plus solide possible ou au moins être conscient de ses lacunes ;)


Message édité par coolkiwi le 17-05-2007 à 12:08:58
Reply

Marsh Posté le 21-05-2007 à 07:47:47    

Bonjour,
 
 
Avec retard dans la fonction mets la commande
sub xxxx()
application.volatile
 
et là ça fonctionnera automatiquement
 

Reply

Marsh Posté le 22-05-2007 à 17:16:23    

bonjour bonjour :)
 
Bon j'ai finalement tout mis sur un bouton, je pense que ça marchera mieux comme ça ;) Moins de choses qui se font toutes seules, l'utilisateur sera moins perdu.
 
Merci pour l'aide et je pense qu'on peut considérer ce sujet comme résolu.... jen 'ai plus qu'à éditer le titre si j'y arrive ;)
 
@ plus
 
Kiwi

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed