Macro copier/coller ligne si plusieurs conditions (actualisation onglet à onglet
InitialesVBA
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
InitialesVBA Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
InitialesVBA Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Ce forum m'a souvent aidé au travail (merci!), mais pour une fois je n'arrive pas à trouver la réponse à mon problème actuel, donc c'est mon premier post ici!
Je me trouve devant le même souci que la personne de ce forum:
https://forums.commentcamarche.net/forum/affich-33865373-macro-copier-coller-ligne-si-plusieurs-conditions#answers
=> Seulement la solution de ce forum n'est plus disponible d'accès sur www.cjoint.com (car datant de 2016)
Pour résumé, j'ai un fichier excel avec deux onglets de formats et d'informations similaires :
(1) "Base de données" & (2) "MaJ"
(1) BdD contient toutes les informations
(2) MaJ est un onglet où j'entre les données/informations actualisées de lignes existantes ou nouvelles avant de les transférer dans l'onglet (1) BdD
Seulement, le document est assez conséquent et je recherche un code vba qui me permette d'actualiser le tout automatiquement.
Certaines cellules sont fixes (nom, prénom: Colonnes "L" & "M") et j'aimerais pouvoir copier/collez en valeur la ligne de "MaJ" qui lui corresponds dans "BdD" en fonction des cellules fixes. Aussi, s'il n'y a pas de correspondances, je souhaiterai que le code ajoute la nouvelle ligne en bas de tableau de "BdD"
C'est assez bien résumé dans le forum cité en haut:
"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. "
Voici le code que l'utilisatrice proposait, mais qui ne fonctionne pas dans mon classeur:
Si vous pouvez m'aider sur ce sujet je vous remercie d'avance :)
Ce forum m'a souvent aidé au travail (merci!), mais pour une fois je n'arrive pas à trouver la réponse à mon problème actuel, donc c'est mon premier post ici!
Je me trouve devant le même souci que la personne de ce forum:
https://forums.commentcamarche.net/forum/affich-33865373-macro-copier-coller-ligne-si-plusieurs-conditions#answers
=> Seulement la solution de ce forum n'est plus disponible d'accès sur www.cjoint.com (car datant de 2016)
Pour résumé, j'ai un fichier excel avec deux onglets de formats et d'informations similaires :
(1) "Base de données" & (2) "MaJ"
(1) BdD contient toutes les informations
(2) MaJ est un onglet où j'entre les données/informations actualisées de lignes existantes ou nouvelles avant de les transférer dans l'onglet (1) BdD
Seulement, le document est assez conséquent et je recherche un code vba qui me permette d'actualiser le tout automatiquement.
Certaines cellules sont fixes (nom, prénom: Colonnes "L" & "M") et j'aimerais pouvoir copier/collez en valeur la ligne de "MaJ" qui lui corresponds dans "BdD" en fonction des cellules fixes. Aussi, s'il n'y a pas de correspondances, je souhaiterai que le code ajoute la nouvelle ligne en bas de tableau de "BdD"
C'est assez bien résumé dans le forum cité en haut:
"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. "
Voici le code que l'utilisatrice proposait, mais qui ne fonctionne pas dans mon classeur:
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
Si vous pouvez m'aider sur ce sujet je vous remercie d'avance :)
A voir également:
- Macro copier/coller ligne si plusieurs conditions (actualisation onglet à onglet
- Rouvrir onglet fermé chrome - Guide
- Historique copier coller - Guide
- Style d'écriture a copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
1 réponse
Bonjour,
Après avoir continué à chercher et à force d'essais, je laisse ici le code pour ceux qui se retrouveront dans la même situation :
Après avoir continué à chercher et à force d'essais, je laisse ici le code pour ceux qui se retrouveront dans la même situation :
Sub CCM()
' Test 1 est le classeur variable
' Test 2 est le classeur fixe
For j = 1 To 12 ' "j" corresponds aux lignes du classeur variable
For i = 1 To 12 ' "i" corresponds aux lignes du classeur fixe
If Trim(Worksheets("TEST1").Cells(j, 1).Value) = vbNullString Then Exit For 'si la cellule intérrogée est vide, on passe à la suivante
If Worksheets("TEST1").Cells(j, 1).Value = Worksheets("TEST2").Cells(i, 1).Value Then 'cherche la correspondance entre les deux cellules similaires dans les deux classeurs
Worksheets("TEST2").Cells(i, 2).Value = Worksheets("TEST1").Cells(j, 2).Value 'copie la valeur du classeur variable dans le classeur fixe pour les colonnes "B"variable à "B"fixe
Worksheets("TEST2").Cells(i, 3).Value = Worksheets("TEST1").Cells(j, 3).Value
Worksheets("TEST2").Cells(i, 4).Value = Worksheets("TEST1").Cells(j, 4).Value ' idem pour les colonnes "D" et "D"
End If
Next
Next
End Sub