Macro copier/remplacer ligne sous condition

Résolu/Fermé
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016 - Modifié par agathe182 le 20/09/2016 à 15:59
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016 - 26 sept. 2016 à 17:31
Bonjour,

J'ai un code qui me permet de comparer deux feuilles excel de la manière suivante par rapport à trois variables dans les colonnes I, P, R :
- Si la ligne qui se trouve dans la feuille A se trouve aussi dans la feuille B, la ligne est remplacée sur la feuille B,
-Si la ligne qui se trouve dans la feuille A, ne se trouve pas dans la feuille B, la ligne est rajoutée à la fin de la feuille B.

Le problème, c'est que je ne souhaite plus que la ligne entière soit remplaçée parce que j'ai une colonne où j'entre des commentaires, et j'aimerai faire le remplacement ou la copie des cellules de cette ligne à partir de la colonne E à AL mais pas de toute la ligne....

Voici mon code :

Option Explicit

Public Const FM As String = "Launch Tracker"
Public Const lidebFM As Byte = 3

Public Const FL As String = "LAT - Master Data"
Public Const lidebFL As Byte = 3

Public Const co1 As Byte = 9 ' colonne I
Public Const co2 As Byte = 16 ' colonne P
Public Const co3 As Byte = 18 ' colonne R

Public Sub Update()
Dim lifinFL As Long, liFL As Long
Dim lifinFM As Long, liFM As Long
Dim obj As Object
Dim V1 As String, V2 As String, V3 As String
With Sheets(FL)
' dernière ligne feuille FL
lifinFL = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
' boucle sur les lignes de FL
For liFL = lidebFL To lifinFL
' dernière ligne de FM
lifinFM = Sheets(FM).Cells.Find("*", , , , xlByRows, xlPrevious).Row
' comparaison des Item ID
V1 = .Cells(liFL, co1).Value
' recherche de V1 dans FM colonne co1
Set obj = Sheets(FM).Columns(co1).Find(V1, , , xlWhole)
' si pas trouve lifm = 1° ligne dispo dans FM pour copie
If obj Is Nothing Then
liFM = lifinFM + 1
' sinon V1 est trouve à la ligne liFM
Else
liFM = obj.Row
' compraison de MARKET et SAP
V2 = .Cells(liFL, co2).Value
V3 = .Cells(liFL, co3).Value
' si identiques on garde liFM = liobj pour ecrasement
If V2 = Sheets(FM).Cells(liFM, co2).Value And V3 = Sheets(FM).Cells(liFM, co3).Value Then
' rien
Else
' si non identiques lifm = 1° ligne dispo dans FM pour copie
liFM = lifinFM + 1
End If
End If
' copie de la ligne liFL dans FM à la ligne liFM
.Rows(liFL).Copy Sheets(FM).Cells(liFM, 1)
Next liFL
End With

End Sub


Est-ce qu'une personne aurait l'amabilité de m'aider ?

Cordialement,

Agathe

A voir également:

4 réponses

agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
21 sept. 2016 à 10:20
Up :)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 21/09/2016 à 10:48
Bonjour,

l'action se fait bien sur les 3 valeurs I, P,R ?
type de données dans ces 3 colonnes : texte,nombre, date....etc ?
Nombre de lignes à traiter ?
FM est elle bien la feuille "A3 ?

si on ne trouve pas IPR dans la feuille on ne copie quand m^me que E à AL ?
sinon, toute le ligne jusqu'à dernière colonne du tableau source (AL?)

merci d'avance mais guère de temps aujourd'hui...

au besoin
Mettre un extrait du classeur sans données confidentielles en pièce jointe sur http://cjoint.com/
et
coller le raccourci par un clic droit sur le lien proposé dans le message de réponse


Car en VBA je n'aime pas du tout travailler à l'aveugle...
Dans l’attente



 Michel
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
Modifié par agathe182 le 21/09/2016 à 17:53
Bonjour Michel,

Merci de me répondre. En fait je voudrais que si les 3 valeurs I, P, R correspondent dans les deux feuilles, la ligne à partir de la colonne E de la feuille "Launch tracker" soit remplacée par la ligne correspondante dans la feuille "LAT - Master Data", et si elles ne correspondent pas qu'elle soit rajoutée.

Voici un extrait de mon document https://www.cjoint.com/c/FIvpXDoyxZM


Merci beaucoup d'avoir répondu.

Cdlt, Agathe
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
22 sept. 2016 à 11:29
bonjour
je viens d'étudier ton classeur et il y a plusieurs possibilités de traitement suivant le nombre de lignes; notamment pour une question de rapidité de traitement
donc, je réitère ma question:
environ combien de lignes utilisées ?
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
22 sept. 2016 à 12:00
Pardon j'avais oublié de répondre. Il y a environ 10,000 lignes par feuille.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
22 sept. 2016 à 12:33
OK merci

proposition en fin d'aprem ou demain dans la matinée
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
22 sept. 2016 à 13:16
Merci beaucoup Michel
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
26 sept. 2016 à 12:59
on s'est croisé, voir + haut ;o)
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
26 sept. 2016 à 13:59
La macro se lance bien mais ça ne fonctionne pas...
J'ai fait un test tout con en mettant la feuille launch tracker vide et en mettant 4 lignes dans LAT-Master Data et ça ne m'a rajouté qu'une ligne sur les 4. Par contre la ligne qui a été remplacée c'est top parce que ça ne copie qu'à partir de la colonne E.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
26 sept. 2016 à 16:50
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
26 sept. 2016 à 17:31
Ok bah tant pis je vais essayer de me débrouiller autrement..
J'ai juste pas compris le code que tu voulais me donner.
0