whiteshark
XLDnaute Nouveau
Bonjour à tous !
Je fais une fois de plus appel à la communauté pour m’aider.
Je voudrais optimiser un code grâce à une boucle mais j’ai beaucoup de mal avec ce genre d’outil.
J’ai un fichier de traitement de données dans lequel je rapatrie les données à partir d’exports qu’on me fournit. Les en-têtes de colonnes sont toujours les mêmes mais les colonnes peuvent changées de place en fonction de l’export. Donc j’utilise le code suivant qui me permet de chercher une colonne du fichier export grâce à son en-tête et de copier où je veux dans le fichier traitement.
Dim Cel As Range
Windows("Export").Activate
Set Cel = Cells.Find(what:="nom de l’en-tête de la colonne")
If Not Cel Is Nothing Then
Cells(1, Cel.Column).Resize(Cells(Rows.Count, Cel.Column).End(xlUp).Row).Copy
ThisWorkbook.Sheets("traitement").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Ça marche parfaitement mais j’ai autant de bloque comme celui-ci par colonne à copier et j’en ai beaucoup.
Je voudrais savoir s’il est possible d’utiliser ce bloc qu’une seule fois en boucle sur une liste d’en-têtes de colonnes. En gros ça chercherait le 1er en-tête de la liste dans l’export, ça copierait la colonne, ça chercherait ce même nom d’en-tête dans le fichier traitement, ça collerait la colonne et on recommence avec le 2ème en-tête et ainsi de suite.
Je vous donne un fichier d’exemple où le bouton Copie lance le code que j’utilise actuellement pour 3 colonnes en copiant les infos de l’onglet export vers l’onglet traitement. Dans l’onglet Paramètre il y a la liste des noms d’en-tête pour la boucle que j’aimerais avoir.
Voilà ! J’espère que j’ai été assez clair dans mes explications et que vous pourrez m’aider. Ça allègerait grandement mon fichier de traitement et en plus ça pourrait me servir pour plus tard.
Je vous dis merci d’avance et bonne journée à tous !
Je fais une fois de plus appel à la communauté pour m’aider.
Je voudrais optimiser un code grâce à une boucle mais j’ai beaucoup de mal avec ce genre d’outil.
J’ai un fichier de traitement de données dans lequel je rapatrie les données à partir d’exports qu’on me fournit. Les en-têtes de colonnes sont toujours les mêmes mais les colonnes peuvent changées de place en fonction de l’export. Donc j’utilise le code suivant qui me permet de chercher une colonne du fichier export grâce à son en-tête et de copier où je veux dans le fichier traitement.
Dim Cel As Range
Windows("Export").Activate
Set Cel = Cells.Find(what:="nom de l’en-tête de la colonne")
If Not Cel Is Nothing Then
Cells(1, Cel.Column).Resize(Cells(Rows.Count, Cel.Column).End(xlUp).Row).Copy
ThisWorkbook.Sheets("traitement").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Ça marche parfaitement mais j’ai autant de bloque comme celui-ci par colonne à copier et j’en ai beaucoup.
Je voudrais savoir s’il est possible d’utiliser ce bloc qu’une seule fois en boucle sur une liste d’en-têtes de colonnes. En gros ça chercherait le 1er en-tête de la liste dans l’export, ça copierait la colonne, ça chercherait ce même nom d’en-tête dans le fichier traitement, ça collerait la colonne et on recommence avec le 2ème en-tête et ainsi de suite.
Je vous donne un fichier d’exemple où le bouton Copie lance le code que j’utilise actuellement pour 3 colonnes en copiant les infos de l’onglet export vers l’onglet traitement. Dans l’onglet Paramètre il y a la liste des noms d’en-tête pour la boucle que j’aimerais avoir.
Voilà ! J’espère que j’ai été assez clair dans mes explications et que vous pourrez m’aider. Ça allègerait grandement mon fichier de traitement et en plus ça pourrait me servir pour plus tard.
Je vous dis merci d’avance et bonne journée à tous !