cifren
XLDnaute Nouveau
Bonjour,
Je recherche une fonction tel que Match afin de trouver une valeur dans un tableau excel d'un fichier et que ce dernier me retourne le numéro de colonne.
Le problème avec la fonction Match, je ne peux faire la recherche que sur une seul ligne A1:A15 par exemple (je crois... ) or ma recherche doit se faire sur un range de A1:E118 et me donner le numéro relatif de la colonne.
Sinon j'ai penser a faire une boucle afin de regarder toute les lignes une par une et effectuer Match sur chaque mais la je bloque sur le passage de ligne a ligne...
C'est pas tres dur mais c'est long quand on connait pas toutes les fonctions sur le bout des doigts
Merci de votre aide
Mon code ressemble a ca :
Pour l'instant mon code n'effectue le traitement que sur la première ligne de "Monfichier"
Je recherche une fonction tel que Match afin de trouver une valeur dans un tableau excel d'un fichier et que ce dernier me retourne le numéro de colonne.
Le problème avec la fonction Match, je ne peux faire la recherche que sur une seul ligne A1:A15 par exemple (je crois... ) or ma recherche doit se faire sur un range de A1:E118 et me donner le numéro relatif de la colonne.
Sinon j'ai penser a faire une boucle afin de regarder toute les lignes une par une et effectuer Match sur chaque mais la je bloque sur le passage de ligne a ligne...
C'est pas tres dur mais c'est long quand on connait pas toutes les fonctions sur le bout des doigts
Merci de votre aide
Mon code ressemble a ca :
Code:
Chemin = ThisWorkbook.Path 'Définit le chemin des fichiers. Ici meme dossier que ce classseur (Masque.xls)
'Set MesChamps = Feuil1.[A1].CurrentRegion 'Définit MesChamps comme étant la zone contenant les noms de champs. Ici A1:AZ1
Set MonFichier = Workbooks.Open(Chemin & "\optimisation npeo.xls") 'fichier de recherche de l'expression
Set MesChamps = MonFichier.Sheets(1).[A1].CurrentRegion 'Définit MesChamps comme étant la zone contenant les noms de champs. Ici A1:AZ1
Set MonClass = Workbooks.Open(Chemin & "\" & Fichier.Name) 'On ouvre le classeur qu'on associe à "MonClass"
Set MaZone = MonClass.Sheets(1).[A1].CurrentRegion 'Définit la zone de données du classeur qu'on vient d'ouvrir comme étant la totalité des données située dans le premier onglet
LigDest = Feuil1.[A1].CurrentRegion.Rows.Count + 1 'Définit la derniere ligne remplie de la destination (Dans Masque.xls)
For Each X In MaZone.Resize(1) 'On boucle sur les noms de champs du classeur qu'on vient d'ouvrir (Resize(1) => premiere ligne seulement de la MaZone)
ColDest = Application.Match(X.Value, MesChamps.Resize(1)) 'Definit la colonne de destination (Recherche de X dans les champs de resultat) Recherche de X dans les champs de Masque.xls.
If Not IsError(ColDest) Then
X.Offset(1, 0).Resize(MaZone.Rows.Count - 1, 1).Copy Feuil1.Cells(LigDest, ColDest) 'En cas d'erreur de syntaxe de nom de champ, pas de collage. Si ColDest existe c'est la colonne dans laquelle coller les données => on copie/colle
End If
Next
Workbooks(Fichier.Name).Close 'On ferme le classeur
Workbooks(MonFichier.Name).Close
Pour l'instant mon code n'effectue le traitement que sur la première ligne de "Monfichier"
Dernière édition: