Macro copier/coller ligne si plusieurs conditions
Résolu
agathe182
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
agathe182 Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
agathe182 Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans un souci d'automatisation, je cherche à mettre à jour les données d'une feuille excel par rapport aux données que j'exporte d'une base de données.
Je cherche à mettre à jour ma ligne i dans ma feuille "Master Data" si ma ligne se trouve dans ma feuille "LAT - Update" en validant trois conditions :
- La cellule de la colonne H de Master Data a la même valeur que la cellule de ma colonne H de "LAT - Update"
- La cellule de la colonne O de Master Data a la même valeur que la cellule de ma colonne O de "Lat - Update"
- La cellule de la colonne Q de Master Data a la même valeur que la cellule de ma colonne Q de "Lat - Update"
Sinon, si la ligne qui se trouve dans "LAT - Update" n'est pas dans "Master Data", qu'elle soit rajoutée à la fin de mon tableau.
Pour l'instant j'ai réussi écrire le code suivant, mais il ne fonctionne pas parce qu'il me cherche une correspondance qu'entre les lignes i mais ne fait pas de recherche dans ma feuille "Update" et ne copie pas la ligne recherchée mais juste la ligne i :
Y aurait-il une âme charitable capable de m'aider ?
Cordialement,
Dans un souci d'automatisation, je cherche à mettre à jour les données d'une feuille excel par rapport aux données que j'exporte d'une base de données.
Je cherche à mettre à jour ma ligne i dans ma feuille "Master Data" si ma ligne se trouve dans ma feuille "LAT - Update" en validant trois conditions :
- La cellule de la colonne H de Master Data a la même valeur que la cellule de ma colonne H de "LAT - Update"
- La cellule de la colonne O de Master Data a la même valeur que la cellule de ma colonne O de "Lat - Update"
- La cellule de la colonne Q de Master Data a la même valeur que la cellule de ma colonne Q de "Lat - Update"
Sinon, si la ligne qui se trouve dans "LAT - Update" n'est pas dans "Master Data", qu'elle soit rajoutée à la fin de mon tableau.
Pour l'instant j'ai réussi écrire le code suivant, mais il ne fonctionne pas parce qu'il me cherche une correspondance qu'entre les lignes i mais ne fait pas de recherche dans ma feuille "Update" et ne copie pas la ligne recherchée mais juste la ligne i :
Private Sub Update_Click()
'Procedure permettant de déplacer les programmes terminés
'Déclaration des variables
Dim i As Integer
Dim DerniereLigne As Integer
Dim ligne As Integer
Application.ScreenUpdating = False
Sheets("Master Data").Select
DerniereLigne = Range("E100000").End(xlUp).Row
For i = 3 To DerniereLigne
ligne = Range(Ei, Yi)
If Sheets("Master Data").Cells(i, 8).Value = sheets("LAT - Update").Cells(i,8).value and ("Master Data").Cells(i, 15).Value = sheets("LAT - Update").Cells(i,15).value and ("Master Data").Cells(i, 17).Value = sheets("LAT - Update").Cells(i,17).value Then
Sheets("LAT - Update").ligne.Copy
Sheets("Master Data").Activate
Sheets("Master Data").ligne.Select
Sheets("Post Launch").Paste
Else: Sheets("LAT - Update").Activate
Sheets("LAT - Update").ligne.Copy
Sheets("Master Data").Cells(Rows.Count, "E").End(xlUp)(2).Select
Sheets("Master Data").Paste
End If
Next i
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox "Le remplacement est terminé", vbOKOnly + vbInformation, "FYI"
End Sub
Y aurait-il une âme charitable capable de m'aider ?
Cordialement,
A voir également:
- Macro copier/coller ligne si plusieurs conditions
- Historique copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Style d'écriture a copier coller - Guide
5 réponses
Bonjour
Peux tu envoyer un bout de ton fichier, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller".
Cdlmnt
Peux tu envoyer un bout de ton fichier, sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller".
Cdlmnt
Bonjour ccm81
Voici un bout de mon fichier http://www.cjoint.com/c/FHFjA2hRmdM
Je souhaite pouvoir copier les lignes de ma feuille "Update" où les trois conditions sont remplies et les coller à la place des lignes déjà existantes dans ma feuille "Master Data" et les lignes ne sont pas dans master data, les ajouter à la suite.
Cdlt,
Agathe
Voici un bout de mon fichier http://www.cjoint.com/c/FHFjA2hRmdM
Je souhaite pouvoir copier les lignes de ma feuille "Update" où les trois conditions sont remplies et les coller à la place des lignes déjà existantes dans ma feuille "Master Data" et les lignes ne sont pas dans master data, les ajouter à la suite.
Cdlt,
Agathe
Ce que j'ai compris
Les lignes dans les deux feuilles sont considérées identiques dès que les 3 conditions (colonne H, O, Q) sont réalisées
Et
Si oui, on écrase la ligne dans Master Data avec celle de Lat - Update
Si non, on ajoute la ligne Lat - Update à Master data
???
Une question
Ordre de grandeur du nombre de lignes du fichier
Les lignes dans les deux feuilles sont considérées identiques dès que les 3 conditions (colonne H, O, Q) sont réalisées
Et
Si oui, on écrase la ligne dans Master Data avec celle de Lat - Update
Si non, on ajoute la ligne Lat - Update à Master data
???
Une question
Ordre de grandeur du nombre de lignes du fichier
Oui mais en fait le problème c'est que je veux pas comparer la ligne 3 du Master Data avec la ligne 3 de LAT Update. Je souhaite que ma ma macro trouve une correspondance de la ligne 3 de LAT update dans Master data et qui me la remplace si les 3 conditions sont réalisées, sinon qu'il me la rajoute à la suite de mon fichier master data.
Le fichier a quelques milliers de lignes, ça varie entre 2000 et 15000..
Le fichier a quelques milliers de lignes, ça varie entre 2000 et 15000..
De rien
Je souhaite que ma ma macro trouve une correspondance de la ligne 3 de LAT update dans Master data et qui
C'est ce que j'avais compris
Vois ceci
http://www.cjoint.com/c/FHFoZGWHOln
Si tu ne veux copier que les valeurs et non le format, tu dis
Cdlmnt
Je souhaite que ma ma macro trouve une correspondance de la ligne 3 de LAT update dans Master data et qui
C'est ce que j'avais compris
Vois ceci
http://www.cjoint.com/c/FHFoZGWHOln
Si tu ne veux copier que les valeurs et non le format, tu dis
Cdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Essaies en ajoutant ce paramère à la méthode Find
Set obj = Sheets(FM).Columns(co1).Find(V1, , , xlWhole, , xlPrevious)
Mais, est ce que ce ne serait pas plus propre/efficace de
1. Traiter toute la feuille LAT une seule fois
2. Traiter chaque ligne ajoutée sur cette feuille (petite procedure à ajouter)
..... du moins si ça correspond à ton problème
Cdlmnt
Set obj = Sheets(FM).Columns(co1).Find(V1, , , xlWhole, , xlPrevious)
Mais, est ce que ce ne serait pas plus propre/efficace de
1. Traiter toute la feuille LAT une seule fois
2. Traiter chaque ligne ajoutée sur cette feuille (petite procedure à ajouter)
..... du moins si ça correspond à ton problème
Cdlmnt
En fait le problème c'est que je suis en train de créer un fichier pour les personnes qui travaillent dans mon service. Le but étant qu'à la fin ils aient un fichier fonctionnel qui soit relativement automatisé.
Du coup, si par inadvertance ils cliquent deux fois, ça biaise pas mal le fichier puisque cela crée des doublons. Je vais trouver une solution pour qu'ils n'aient pas ce problème.
En tout cas je te remercie pour ton aide :)
Du coup, si par inadvertance ils cliquent deux fois, ça biaise pas mal le fichier puisque cela crée des doublons. Je vais trouver une solution pour qu'ils n'aient pas ce problème.
En tout cas je te remercie pour ton aide :)