Menu

Copier cellules d'une feuile a une autre avec conditions [Résolu]

Messages postés
7
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
11 février 2019
- - Dernière réponse : fikou
Messages postés
7
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
11 février 2019
- 11 févr. 2019 à 14:23
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
Afficher la suite 

Votre réponse

7 réponses

Messages postés
15676
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 février 2019
3610
0
Merci
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


Commenter la réponse de michel_m
Messages postés
7
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
11 février 2019
0
Merci
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
Commenter la réponse de fikou
Messages postés
15676
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 février 2019
3610
0
Merci
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
Commenter la réponse de michel_m
Messages postés
7
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
11 février 2019
0
Merci
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
Commenter la réponse de fikou
Messages postés
7
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
11 février 2019
0
Merci
En fait je n'ai plus d'erreur mais rien ne se copie ?
Commenter la réponse de fikou
Messages postés
15676
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 février 2019
3610
0
Merci
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 ?
Commenter la réponse de michel_m
Messages postés
7
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
11 février 2019
0
Merci
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
Commenter la réponse de fikou