Menu

Simplification de programme [Résolu]

NoviceVBA2017 10 Messages postés dimanche 29 janvier 2017Date d'inscription 5 janvier 2018 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 

Votre réponse

2 réponses

f894009 13279 Messages postés dimanche 25 novembre 2007Date d'inscription 21 juillet 2018 Dernière intervention - 9 oct. 2017 à 16:11
0
Merci
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
Merci
Bonjour f894009,

Merci, c'est exactement ce que je recherchais.

Bien cordialement
Commenter la réponse de NoviceVBA2017