Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier par macro d'un table vers une autre table

1 réponse
Avatar
Bruno
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

1 réponse

Avatar
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