Copier cellules d'une feuile a une autre avec conditions
Résolu
fikou
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
fikou Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
fikou Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une ancienne base de données dbf que j'ai importé dans Excel.
Cette base est composée de plusieurs tables avec relations.
J'aimerai copier une plage de cellules d'une feuille vers une autre selon condition.
Dans chacune des 2 feuilles j'ai une colonne identique (colonne qui servait de relation dans la base).
Je recherche une formule permettant de copier une plage Feuil1 B1:F1 vers Feuil2 A1:F1 si feuil1 A1 est égal à Feuil2 G2.
Je n'ai pas trouvé de formule sur le web.
Je ne sait pas si c'est possible avec une formule ou si il faut passer par Vba.
Merci d'avance
FikoU
J'ai une ancienne base de données dbf que j'ai importé dans Excel.
Cette base est composée de plusieurs tables avec relations.
J'aimerai copier une plage de cellules d'une feuille vers une autre selon condition.
Dans chacune des 2 feuilles j'ai une colonne identique (colonne qui servait de relation dans la base).
Je recherche une formule permettant de copier une plage Feuil1 B1:F1 vers Feuil2 A1:F1 si feuil1 A1 est égal à Feuil2 G2.
Je n'ai pas trouvé de formule sur le web.
Je ne sait pas si c'est possible avec une formule ou si il faut passer par Vba.
Merci d'avance
FikoU
A voir également:
- Copier cellules d'une feuile a une autre avec conditions
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Formule excel pour additionner plusieurs cellules - Guide
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller cellules excel - Guide
7 réponses
Bonjour
Option Explicit
'-----------------------------------
Sub copier_si()
If Sheets(1).Range("A1") = Sheets(2).Range("G2") Then
Sheets(2).Range("A1:E1") = Sheets(1).Range("B1:F1").Value
End If
End Sub
Bonjour,
Merci pour ce bout de code.
Ce que j'ai oublié de dire c'est que la colonne de la feuil1 est une clé unique et pas dans la feuil2 qui a plusieurs occurrences et que j'ai 300 lignes à copier.
Donc il faut que j'implémente une boucle. Je connais le VB mais pas trop le VBA et les spécificité Excel.
Il faut sortir de la boucle dès la première ligne vide de feuil2 et c'est la dessus que je sèche.
Bon dimanche
FikoU
Merci pour ce bout de code.
Ce que j'ai oublié de dire c'est que la colonne de la feuil1 est une clé unique et pas dans la feuil2 qui a plusieurs occurrences et que j'ai 300 lignes à copier.
Donc il faut que j'implémente une boucle. Je connais le VB mais pas trop le VBA et les spécificité Excel.
Il faut sortir de la boucle dès la première ligne vide de feuil2 et c'est la dessus que je sèche.
Bon dimanche
FikoU
bonjour
pour la première ligne vide d'une colonne
ligvid=columns("A")Find(what:="",after:=Range("A1"), lookin:=xlvalues).Row
en supposant qu'il y ait quelque chose dans A1 et pas de cellule vide avant la dernière ligne occupée dans la colonne
pour la première ligne vide d'une colonne
ligvid=columns("A")Find(what:="",after:=Range("A1"), lookin:=xlvalues).Row
en supposant qu'il y ait quelque chose dans A1 et pas de cellule vide avant la dernière ligne occupée dans la colonne
Merci Michel,
J'ai tenter d'écrire un bout de code mais cela ne fonctionne pas
Option Explicit
'-----------------------------------
Sub copier_si()
Dim i, j As Integer
j = 2
i = 2
While i <> 289
If Sheets(2).Range("A" & i) = Sheets(1).Range("G" & j) Then
Sheets(1).Range("A" & j & ":F" & j).Value = Sheets(2).Range("A" & i & ":F" & i).Value
j = j + 1
Else
i = i + 1
End If
Wend
End Sub
A bientôt et encore merci
FikoU
J'ai tenter d'écrire un bout de code mais cela ne fonctionne pas
Option Explicit
'-----------------------------------
Sub copier_si()
Dim i, j As Integer
j = 2
i = 2
While i <> 289
If Sheets(2).Range("A" & i) = Sheets(1).Range("G" & j) Then
Sheets(1).Range("A" & j & ":F" & j).Value = Sheets(2).Range("A" & i & ":F" & i).Value
j = j + 1
Else
i = i + 1
End If
Wend
End Sub
A bientôt et encore merci
FikoU
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pourquoi ne pas créer une requete dans ta base entre la clé primaire et la clé étrangère et transporter le résultat dans Excel ?
Je ne connais pas les requêtes sous Excel……
Si tu as une piste cela m'intéresse.
J'ai réussi avec ce code :
Option Explicit
'-----------------------------------
Sub copier_si()
Dim i, j As Integer
j = 2
i = 2
While i <> 296
While Sheets("DB_PINN").Range("A" & i) = Sheets("DB_MILL").Range("G" & j)
''On copie
Sheets(1).Range("A" & j & ":F" & j).Value = Sheets(2).Range("A" & i & ":F" & i).Value
j = j + 1
Wend
i = i + 1
Wend
End Sub
Je cherchais du compliqué mais pour finir c'est asser simple.
Je ne programme pas souvent donc la machine est longue à relancer
Un grand merci à toi
@+FikoU
Si tu as une piste cela m'intéresse.
J'ai réussi avec ce code :
Option Explicit
'-----------------------------------
Sub copier_si()
Dim i, j As Integer
j = 2
i = 2
While i <> 296
While Sheets("DB_PINN").Range("A" & i) = Sheets("DB_MILL").Range("G" & j)
''On copie
Sheets(1).Range("A" & j & ":F" & j).Value = Sheets(2).Range("A" & i & ":F" & i).Value
j = j + 1
Wend
i = i + 1
Wend
End Sub
Je cherchais du compliqué mais pour finir c'est asser simple.
Je ne programme pas souvent donc la machine est longue à relancer
Un grand merci à toi
@+FikoU