Bonjour,
J'ai une base 1 qui contient des données stockées selon des champs
A,B,C,D,E,F jusqu'à U.
Lorsque le champs U contient une donnée (Teste ou Numérique), je veux
reporter les données figurant sous les champs R,E,C,D,B,F,G,H et U dans une
base 2.
Je ne suis pas très expert en VBA. J'ai réussi en utilisant les fonctions SI
et RECHERCHE V, mais ce n'est pas aussi efficace que le code VBA et cela
implique plus de manip, car je transpose sur ma base 2 toutes les lignes de
la base 1, mais certaine sont vides. Je voudrai ne transferer sur la base 2
que les lignes (selon les champs qui m'intertessent) correspondant à un
champs U contenant une info.
Y a-t-il une bonne âme qui pourrait m'aider ?
Merci d'avance,
Bruno
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
Daniel.C
Bonjour. Le code suivant repose sur la supposition que le champ commun aux deux bases est la colonne A. La base 1 est sur la feuille "Feuil1" et la base 2 sur la feuille "Feuil2" Les colonnes ont été recopiées à l'identique. Enfin, la macro n'a pas été testée... Si tu as des problèmes d'adaptation, mets un classeur exemple (en altérant les données confidentielles) sur www.cjoint.com et poste l'adresse générée.
Sub test() Dim c As Range, Ctr, sh As Worksheet Set sh = Sheets("Feuil2") With Sheets("Feuil1") For Each c In .Range("A1", .Range("A65536").End(xlUp)) If .Cells(c.Row, "U") <> "" Then Ctr = Application.Match(c, sh.Range("A:A"), 0) If IsNumeric(Ctr) Then sh.Cells(Ctr, "R") = .Cells(c.Row, "R") sh.Cells(Ctr, "E") = .Cells(c.Row, "E") sh.Cells(Ctr, "C") = .Cells(c.Row, "C") sh.Cells(Ctr, "D") = .Cells(c.Row, "D") sh.Cells(Ctr, "B") = .Cells(c.Row, "B") sh.Cells(Ctr, "F") = .Cells(c.Row, "F") sh.Cells(Ctr, "G") = .Cells(c.Row, "G") sh.Cells(Ctr, "H") = .Cells(c.Row, "H") sh.Cells(Ctr, "U") = .Cells(c.Row, "U") Else MsgBox c & " n'a pas de correspondance dans la base 2" End If End If Next c End With End Sub
Cordialement. Daniel "Bruno" a écrit dans le message de news:
Bonjour, J'ai une base 1 qui contient des données stockées selon des champs A,B,C,D,E,F jusqu'à U. Lorsque le champs U contient une donnée (Teste ou Numérique), je veux reporter les données figurant sous les champs R,E,C,D,B,F,G,H et U dans une base 2. Je ne suis pas très expert en VBA. J'ai réussi en utilisant les fonctions SI et RECHERCHE V, mais ce n'est pas aussi efficace que le code VBA et cela implique plus de manip, car je transpose sur ma base 2 toutes les lignes de la base 1, mais certaine sont vides. Je voudrai ne transferer sur la base 2 que les lignes (selon les champs qui m'intertessent) correspondant à un champs U contenant une info. Y a-t-il une bonne âme qui pourrait m'aider ? Merci d'avance, Bruno
Bonjour.
Le code suivant repose sur la supposition que le champ commun aux deux bases
est la colonne A.
La base 1 est sur la feuille "Feuil1" et la base 2 sur la feuille "Feuil2"
Les colonnes ont été recopiées à l'identique.
Enfin, la macro n'a pas été testée...
Si tu as des problèmes d'adaptation, mets un classeur exemple (en altérant
les données confidentielles) sur www.cjoint.com et poste l'adresse générée.
Sub test()
Dim c As Range, Ctr, sh As Worksheet
Set sh = Sheets("Feuil2")
With Sheets("Feuil1")
For Each c In .Range("A1", .Range("A65536").End(xlUp))
If .Cells(c.Row, "U") <> "" Then
Ctr = Application.Match(c, sh.Range("A:A"), 0)
If IsNumeric(Ctr) Then
sh.Cells(Ctr, "R") = .Cells(c.Row, "R")
sh.Cells(Ctr, "E") = .Cells(c.Row, "E")
sh.Cells(Ctr, "C") = .Cells(c.Row, "C")
sh.Cells(Ctr, "D") = .Cells(c.Row, "D")
sh.Cells(Ctr, "B") = .Cells(c.Row, "B")
sh.Cells(Ctr, "F") = .Cells(c.Row, "F")
sh.Cells(Ctr, "G") = .Cells(c.Row, "G")
sh.Cells(Ctr, "H") = .Cells(c.Row, "H")
sh.Cells(Ctr, "U") = .Cells(c.Row, "U")
Else
MsgBox c & " n'a pas de correspondance dans la base 2"
End If
End If
Next c
End With
End Sub
Cordialement.
Daniel
"Bruno" <Bruno@discussions.microsoft.com> a écrit dans le message de news:
0101B45C-440E-4B8B-A032-EB2EBDAB4BA3@microsoft.com...
Bonjour,
J'ai une base 1 qui contient des données stockées selon des champs
A,B,C,D,E,F jusqu'à U.
Lorsque le champs U contient une donnée (Teste ou Numérique), je veux
reporter les données figurant sous les champs R,E,C,D,B,F,G,H et U dans
une
base 2.
Je ne suis pas très expert en VBA. J'ai réussi en utilisant les fonctions
SI
et RECHERCHE V, mais ce n'est pas aussi efficace que le code VBA et cela
implique plus de manip, car je transpose sur ma base 2 toutes les lignes
de
la base 1, mais certaine sont vides. Je voudrai ne transferer sur la base
2
que les lignes (selon les champs qui m'intertessent) correspondant à un
champs U contenant une info.
Y a-t-il une bonne âme qui pourrait m'aider ?
Merci d'avance,
Bruno
Bonjour. Le code suivant repose sur la supposition que le champ commun aux deux bases est la colonne A. La base 1 est sur la feuille "Feuil1" et la base 2 sur la feuille "Feuil2" Les colonnes ont été recopiées à l'identique. Enfin, la macro n'a pas été testée... Si tu as des problèmes d'adaptation, mets un classeur exemple (en altérant les données confidentielles) sur www.cjoint.com et poste l'adresse générée.
Sub test() Dim c As Range, Ctr, sh As Worksheet Set sh = Sheets("Feuil2") With Sheets("Feuil1") For Each c In .Range("A1", .Range("A65536").End(xlUp)) If .Cells(c.Row, "U") <> "" Then Ctr = Application.Match(c, sh.Range("A:A"), 0) If IsNumeric(Ctr) Then sh.Cells(Ctr, "R") = .Cells(c.Row, "R") sh.Cells(Ctr, "E") = .Cells(c.Row, "E") sh.Cells(Ctr, "C") = .Cells(c.Row, "C") sh.Cells(Ctr, "D") = .Cells(c.Row, "D") sh.Cells(Ctr, "B") = .Cells(c.Row, "B") sh.Cells(Ctr, "F") = .Cells(c.Row, "F") sh.Cells(Ctr, "G") = .Cells(c.Row, "G") sh.Cells(Ctr, "H") = .Cells(c.Row, "H") sh.Cells(Ctr, "U") = .Cells(c.Row, "U") Else MsgBox c & " n'a pas de correspondance dans la base 2" End If End If Next c End With End Sub
Cordialement. Daniel "Bruno" a écrit dans le message de news:
Bonjour, J'ai une base 1 qui contient des données stockées selon des champs A,B,C,D,E,F jusqu'à U. Lorsque le champs U contient une donnée (Teste ou Numérique), je veux reporter les données figurant sous les champs R,E,C,D,B,F,G,H et U dans une base 2. Je ne suis pas très expert en VBA. J'ai réussi en utilisant les fonctions SI et RECHERCHE V, mais ce n'est pas aussi efficace que le code VBA et cela implique plus de manip, car je transpose sur ma base 2 toutes les lignes de la base 1, mais certaine sont vides. Je voudrai ne transferer sur la base 2 que les lignes (selon les champs qui m'intertessent) correspondant à un champs U contenant une info. Y a-t-il une bonne âme qui pourrait m'aider ? Merci d'avance, Bruno