Signaler

Simplification de programme [Résolu]

Posez votre question NoviceVBA2017 7Messages postés dimanche 29 janvier 2017Date d'inscription 9 octobre 2017 Dernière intervention - Dernière réponse le 10 oct. 2017 à 15:00 par NoviceVBA2017
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

Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
Bonjour f894009,

Merci, c'est exactement ce que je recherchais.

Bien cordialement
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !