Simplification de programme [Résolu]

NoviceVBA2017 7 Messages postés dimanche 29 janvier 2017Date d'inscription 9 octobre 2017 Dernière intervention - 9 oct. 2017 à 15:45 - Dernière réponse :  NoviceVBA2017
- 10 oct. 2017 à 15:00
Bonjour,

Je suis encore novice en programmation VBA et je rencontre un problème : mes procédures sont beaucoup trop longues à relire et j'aimerai les simplifier.

J'ai donc un tableau avec plusieurs colonnes.
Une partie de mon programme consiste à rechercher les noms des colonnes et à les retrier en fonction (l'ordre des colonnes changent, parfois il y a des colonnes en plus, parfois en moins, mais certaines colonnes sont toujours présentent : c'est celles-ci que je vais rechercher).

J'ai donc une liste de nom de colonne dans différentes variables, et j'utilise systématiquement cette portion de procédure :

Dim posDateMouvement As Integer
posDateMouvement = 1
Nomcolon = Sheets("Extraction").cells(1, posDateMouvement).Value
While Nomcolon <> "Date Mouvement"
posDateMouvement = posDateMouvement + 1
Nomcolon = Sheets("Extraction").cells(1, posDateMouvement).Value
Wend

Ici je recherche donc la colonne qui s'appel "Date Mouvement", mais je recopie cette procédure X fois avec des noms de colonnes différentes, et ça me fait au final presque 150 lignes de code.

Auriez-vous une piste pour raccourcir cette procédure svp?

Merci d'avance pour votre retour.

Bien cordialement,
Un novice en VBA

Afficher la suite 

2 réponses

Répondre au sujet
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - 9 oct. 2017 à 16:11
0
Utile
Bonjour,

Utilisez une fonction pour la recherche

exemple:

Sub test()
    Nomcolon = "A"
    posDateMouvement = recherche_colonne(Nomcolon)
End Sub

Function recherche_colonne(Nomcolon)
    col = 1
    With Worksheets("feuil1")
       col = .Rows(1).Find("A", .Cells(1, col), , xlWhole).Column
    End With
    recherche_colonne = col
End Function
Commenter la réponse de f894009
NoviceVBA2017 - 10 oct. 2017 à 15:00
0
Utile
Bonjour f894009,

Merci, c'est exactement ce que je recherchais.

Bien cordialement
Commenter la réponse de NoviceVBA2017