J'ai deux fichiers séparés avec dans chaque :
- une colonne A qui comporte les mêmes textes dans les deux fichiers
- une colonne B avec des textes aléatoires
Exemple :
Fichier 1
Colonne A Colonne B
AABBC il fait beau
AABCA il fait pas beau
ABCAD il est noir
Fichier 2
Colonne A Colonne B
AABBC texte récupéré du fichier 1
AABBC "
AABCE "
AABBC "
ABCAD "
Je souhaite dans le fichier 2, inscrire les textes de la colonne B
automatiquement, en récupérant les infos du fichier 1 en me servant du code
de la colonne A
J'espère que quelqu'un me trouvera une solution que j'imagine toute simple,
et surtout que mes explications sont compréhensibles
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Vincent,
Une façon rapide de faire :
A ) Copie la macro suivante dans un module standard de ton classeur où tu veux compléter ta colonne B:B Tu ouvres l'éditeur de code VBA -> raccourci clavier F11 Barre des menus / Insertions / Module
B ) Tu dois ajouter une référence à ton projetVBA. Pour ce faire : Barres des menus / outils / référence / et tu coches dans la liste : "Microsoft Activex Data objects 2.8 library"
C ) Le code suivant suppose que tu n'as pas de ligne d'étiquettes de tes colonnes pour tes 2 colonnes A et B dans le classeur où tu veux extraire tes données et que tes données débutent en ligne 1
D ) Tu lis la procédure et tu adaptes 2 choses : Le nom des feuilles (2 places) Le chemin et le fichier où sont tes données source
'--------------------------------------------- Sub RequêteAvecADO_Feuille()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset Dim Requete As String, NomFeuille As String, C As Range Dim File As String, Plage As Range
'Nom de la feuille du fichier où sont les données complètes NomFeuille = "Feuil1" 'Nom à adapter
'Chemin et nom du fichier où sont tes 2 colonnes remplies: File = "c:UsersDMDocumentsClasseur1.xls" 'à adapter
'Plage des données, tes données sont dans les colonnes A:B 'et ils débutent en ligne 1 Set Plage = Range("A:B")
Set Conn = New ADODB.Connection Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & File & ";" & _ "Extended Properties=""Excel 8.0;HDR=NO;"""
'La requête qui sera exécutée. Requete = "SELECT * From [" & NomFeuille & "$" & _ Plage.Address(0, 0) & "]" 'Exécution de la requête Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
'Adapte le nom de la feuille où sont 'tes données à remplir With Worksheets("Feuil2") 'à adapter For Each C In .Range("A1:A" & .Range("A65536").End(xlUp).Row) Rst.Find "F1 Like " & "'" & C.Value & "'" If Rst.EOF = False Then C.Offset(, 1).Value = Rst(1).Value Else Rst.MoveFirst End If Next End With Application.ScreenUpdating = True Application.EnableEvents = True
Rst.Close: Conn.Close Set Rst = Nothing: Set Conn = Nothing End Sub '---------------------------------------------
"Vincent CHRISTOL" a écrit dans le message de groupe de discussion : C7ED05B5.35389% Bonjour à tous,
J'ai deux fichiers séparés avec dans chaque : - une colonne A qui comporte les mêmes textes dans les deux fichiers - une colonne B avec des textes aléatoires
Exemple : Fichier 1 Colonne A Colonne B AABBC il fait beau AABCA il fait pas beau ABCAD il est noir
Fichier 2 Colonne A Colonne B AABBC texte récupéré du fichier 1 AABBC " AABCE " AABBC " ABCAD "
Je souhaite dans le fichier 2, inscrire les textes de la colonne B automatiquement, en récupérant les infos du fichier 1 en me servant du code de la colonne A
J'espère que quelqu'un me trouvera une solution que j'imagine toute simple, et surtout que mes explications sont compréhensibles
;-) 20/100
Bonjour Vincent,
Une façon rapide de faire :
A ) Copie la macro suivante dans un module standard de ton classeur
où tu veux compléter ta colonne B:B
Tu ouvres l'éditeur de code VBA -> raccourci clavier F11
Barre des menus / Insertions / Module
B ) Tu dois ajouter une référence à ton projetVBA. Pour ce faire :
Barres des menus / outils / référence / et tu coches dans la liste :
"Microsoft Activex Data objects 2.8 library"
C ) Le code suivant suppose que tu n'as pas de ligne d'étiquettes
de tes colonnes pour tes 2 colonnes A et B dans le classeur où tu
veux extraire tes données et que tes données débutent en ligne 1
D ) Tu lis la procédure et tu adaptes 2 choses :
Le nom des feuilles (2 places)
Le chemin et le fichier où sont tes données source
'---------------------------------------------
Sub RequêteAvecADO_Feuille()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String, C As Range
Dim File As String, Plage As Range
'Nom de la feuille du fichier où sont les données complètes
NomFeuille = "Feuil1" 'Nom à adapter
'Chemin et nom du fichier où sont tes 2 colonnes remplies:
File = "c:UsersDMDocumentsClasseur1.xls" 'à adapter
'Plage des données, tes données sont dans les colonnes A:B
'et ils débutent en ligne 1
Set Plage = Range("A:B")
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;"""
'La requête qui sera exécutée.
Requete = "SELECT * From [" & NomFeuille & "$" & _
Plage.Address(0, 0) & "]"
'Exécution de la requête
Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
'Adapte le nom de la feuille où sont
'tes données à remplir
With Worksheets("Feuil2") 'à adapter
For Each C In .Range("A1:A" & .Range("A65536").End(xlUp).Row)
Rst.Find "F1 Like " & "'" & C.Value & "'"
If Rst.EOF = False Then
C.Offset(, 1).Value = Rst(1).Value
Else
Rst.MoveFirst
End If
Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
Rst.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'---------------------------------------------
"Vincent CHRISTOL" <atelierchristol@orange.fr> a écrit dans le message de groupe de
discussion : C7ED05B5.35389%atelierchristol@orange.fr...
Bonjour à tous,
J'ai deux fichiers séparés avec dans chaque :
- une colonne A qui comporte les mêmes textes dans les deux fichiers
- une colonne B avec des textes aléatoires
Exemple :
Fichier 1
Colonne A Colonne B
AABBC il fait beau
AABCA il fait pas beau
ABCAD il est noir
Fichier 2
Colonne A Colonne B
AABBC texte récupéré du fichier 1
AABBC "
AABCE "
AABBC "
ABCAD "
Je souhaite dans le fichier 2, inscrire les textes de la colonne B
automatiquement, en récupérant les infos du fichier 1 en me servant du code
de la colonne A
J'espère que quelqu'un me trouvera une solution que j'imagine toute simple,
et surtout que mes explications sont compréhensibles
A ) Copie la macro suivante dans un module standard de ton classeur où tu veux compléter ta colonne B:B Tu ouvres l'éditeur de code VBA -> raccourci clavier F11 Barre des menus / Insertions / Module
B ) Tu dois ajouter une référence à ton projetVBA. Pour ce faire : Barres des menus / outils / référence / et tu coches dans la liste : "Microsoft Activex Data objects 2.8 library"
C ) Le code suivant suppose que tu n'as pas de ligne d'étiquettes de tes colonnes pour tes 2 colonnes A et B dans le classeur où tu veux extraire tes données et que tes données débutent en ligne 1
D ) Tu lis la procédure et tu adaptes 2 choses : Le nom des feuilles (2 places) Le chemin et le fichier où sont tes données source
'--------------------------------------------- Sub RequêteAvecADO_Feuille()
Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset Dim Requete As String, NomFeuille As String, C As Range Dim File As String, Plage As Range
'Nom de la feuille du fichier où sont les données complètes NomFeuille = "Feuil1" 'Nom à adapter
'Chemin et nom du fichier où sont tes 2 colonnes remplies: File = "c:UsersDMDocumentsClasseur1.xls" 'à adapter
'Plage des données, tes données sont dans les colonnes A:B 'et ils débutent en ligne 1 Set Plage = Range("A:B")
Set Conn = New ADODB.Connection Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & File & ";" & _ "Extended Properties=""Excel 8.0;HDR=NO;"""
'La requête qui sera exécutée. Requete = "SELECT * From [" & NomFeuille & "$" & _ Plage.Address(0, 0) & "]" 'Exécution de la requête Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
'Adapte le nom de la feuille où sont 'tes données à remplir With Worksheets("Feuil2") 'à adapter For Each C In .Range("A1:A" & .Range("A65536").End(xlUp).Row) Rst.Find "F1 Like " & "'" & C.Value & "'" If Rst.EOF = False Then C.Offset(, 1).Value = Rst(1).Value Else Rst.MoveFirst End If Next End With Application.ScreenUpdating = True Application.EnableEvents = True
Rst.Close: Conn.Close Set Rst = Nothing: Set Conn = Nothing End Sub '---------------------------------------------
"Vincent CHRISTOL" a écrit dans le message de groupe de discussion : C7ED05B5.35389% Bonjour à tous,
J'ai deux fichiers séparés avec dans chaque : - une colonne A qui comporte les mêmes textes dans les deux fichiers - une colonne B avec des textes aléatoires
Exemple : Fichier 1 Colonne A Colonne B AABBC il fait beau AABCA il fait pas beau ABCAD il est noir
Fichier 2 Colonne A Colonne B AABBC texte récupéré du fichier 1 AABBC " AABCE " AABBC " ABCAD "
Je souhaite dans le fichier 2, inscrire les textes de la colonne B automatiquement, en récupérant les infos du fichier 1 en me servant du code de la colonne A
J'espère que quelqu'un me trouvera une solution que j'imagine toute simple, et surtout que mes explications sont compréhensibles