Simplification de programme
Résolu
NoviceVBA2017
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
NoviceVBA2017 -
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
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
A voir également:
- Simplification de programme
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
Bonjour,
Utilisez une fonction pour la recherche
exemple:
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