[déplacé VB6 -> VBA] Rechercher un nom dans une ligne et recuperer le numero de

Résolu
cs_Alban83 Messages postés 24 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 21 septembre 2010 - 3 juil. 2009 à 09:54
cs_Alban83 Messages postés 24 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 21 septembre 2010 - 3 juil. 2009 à 13:37
Bonjour,

Ma mission de stage en entreprise porte sur la conception d'une macro avec excel et vb mais je ne metrisse pas du tt VB. C'est pr cela que je demande de l'aide.

Mon probleme:

J'ai un tableau ou il y a une multitude de colonne de type: Ref; Nom; Date;Net euro; Nb utilisateurs.....
Ce tableau est consu tt les mois mais il peut y avoir plus ou moin de colonnes chaque mois.
Ma macro fait des operations avec differente colonnes, c'est colonne y sont tjrs mais pas forcement a la meme place.
Je n'arrive pas a savoir comment je peux chercher la colenne par l'intermediaire de son nom et recuperer le numero de la conlonne pour l'utiliser dans la suite de ma macro?

Vous pouvez m'aider ?

Merci d'avance

4 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
3 juil. 2009 à 11:16
bonjour
tout d'abord rechercher le nombre de colonnes

nbColonnes = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column

ensuite faire une boucle  pour rechercher ton libellé de colonne

dim colNom as integer, colRef as integer ' une variable par numéro de colonne dont tu as besoin
for i = 1 to nbColonnesif cells(1,i).text "Nom" then colNom iif cells(1,i).text "Ref" then colRef i
next i

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
3
cs_Alban83 Messages postés 24 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 21 septembre 2010
3 juil. 2009 à 11:43
Merci pour ta solution! ça fonctionne.
Peux tu juste me dire si le role de: nbColonnes = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column
c'est de trouver la derniere colonne et si oui pourquoi c'est tres different de ce que j'utise pour trouver la derniere ligne: ligne = Range("A1").End(xlDown).Row

Mais encor merci pour ton aide
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
3 juil. 2009 à 12:38
Attention
nbLignes = Range("A1").End(xlDown).Row
te donnes le nombre de ligne JUSQU'A la premiere cellule vide
exemple dans une feuille excel qui a 5 lignes dont la ligne 3 est vide cela te donneras 2 comme résultat
par contre
nbLignes = Range("A65536").End(xlUp).Row
te donneras bien 5
de meme que
nbLignes = Columns("A:A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row

dans une feuille excel qui a 5 colonnes dont la colonne 3 est vide
nbColonnes = Range("A1").End(xlToRight).Column  'donne 2
nbColonnes = Range("IV1").End(xlToLeft).Column 'donne 5
nbColonnes = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column ' donne 5

a toi de choisir ce qui te convient le mieux suivant tes besoins

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
cs_Alban83 Messages postés 24 Date d'inscription vendredi 3 juillet 2009 Statut Membre Dernière intervention 21 septembre 2010
3 juil. 2009 à 13:37
Ok, ta solution est plus sur je pense donc je vais la prendre.
encor merci pr le tps que tu m'as consacré.
0
Rejoignez-nous