Mise à jour d'une ligne avec plusieurs critères
Bonjour,
Je voudrais mettre à jour le poids (colonne I) dans la feuille "ECHEANCIER" à partir des données de la feuille "MaJ", le remplacement de la ligne doit se faire en vérifiant les critères de N° (colonne A), Age (colonne E) et Ville (colonne H).
Vous trouverez en PJ un exemple de la macro que j'ai créé, mais elle ne fait pas ce que je veux.
Merci d'avance pour votre aide.
Cordialement.
Bonjour
Avec une formule, exemple en I2
=SOMMEPROD((MaJ!$A$3:$A$17=A2)*(MaJ!$E$3:$E$17=E2)*(MaJ!$H$3:$H$17=H2);MaJ!$I$3:$I$17)Cordialement
Bonjour Amadéus,
Merci pour ta reponce ultra rapide.
Je ne veux pas de formule, je souhaite une macro pou faire cette mise a jour entre les deux feuilles.
Cordialement.
Bonjour,
Je vous transmets des précisions sur ce que je veux obtenir et mon code en clair.
1 Memorisation des valeurs de la ligne 3, cellule A à H dans la feuille "MaJ"
2 Recherche de la ligne, cellule A à H dans la feuille "ECHEANCIER"
3 remplacement de la valeur de la cellule I ou de la ligne complete sur la ligne trouvée. si aucune ligne trouvée ouverture d'un BOX pour le signaler
4 IDEM 1, 2 et 3 jusqu'a derniere ligne de feuille "MaJ"
Sub MAJ()
'MAJ des Poids dans ECHEANCIER
Dim WsS As Worksheet, WsC As Worksheet
Dim Cel As Range, C As Range
Dim firstAddress As String
Application.ScreenUpdating = False
Set WsS = Worksheets("MaJ")
Set WsC = Worksheets("ECHEANCIER")
'On effectue un balayage de chacune des clés dans la colonne A de la feuille "MaJ"
For Each Cel In WsS.Range("A3:A" & WsS.Range("A" & Rows.Count).End(xlUp).Row)
'On cherche une correspondance de chaque clé dans la feuille "ECHEANCIER"
Set C = WsC.Columns("A").Find(Cel.Value, LookIn:=xlValues, LookAt:=xlWhole)
'Si la clé existe
If Not C Is Nothing And C.Offset(0, 4) = Cel.Offset(0, 4) And C.Offset(0, 7) = Cel.Offset(0, 7) Then
'On mémorise l'emplacement du nom dans la feuille "MaJ" afin de ne pas boucler sur les mêmes emplacements.
firstAddress = C.Address
Do
'alors, on effectue la copie des données de la colonne A à la colonne M de la feuille "MaJ"
Cel.Resize(, 13).Copy
'puis on effectue le remplacement de ces données dans la feuille "ECHEANCIER"
WsC.Range("A" & C.Row).PasteSpecial (xlPasteValues)
'On poursuit la recherche
Set C = WsC.Columns("A").FindNext(C)
'On boucle tant que le même nom est trouvé et que l'emplacement est différent
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
Next Cel
Application.CutCopyMode = False
Set C = Nothing: Set WsS = Nothing: Set WsC = Nothing
End SubMerci d'avance pour votre aide.
Cordialement.
Bonjour,
Personne n’a de réponse à me donner?
Bonjour,
N'ayant pas de réponse à ma question, je suppose que je ne suis pas assez clair donc je vais essayer d'être plus précis :
Il faut que la macro recherche une ligne identique à la ligne 3, cellule de A à H, de la feuille "MAJ", dans la feuille "ECHEANCIER".
Deux options :
- Ligne trouvée : copie de la valeur de la ligne 3, cellule I, de la feuille MAJ et collage dans la ligne trouvée cellule I, de la feuille ECHEANCIER
- Ligne non trouvée : Ouverture d'une box pour signaler le problème
La macro mise en clair dans mon message précédent fonctionne, mais elle compare que la cellule A (alors que je voudrais de A à H) pour la recherche de ligne.
Donc elle effectue une mise à jour de la valeur de la cellule I même si les valeurs de B à H sont différentes. Cette macro est un essai, mais je suis ultra novice en programmation, j'ai écrit cette macro en m'inspirant de FORUM, s'il existe une autre solution en passant par une autre fonction je suis preneur.
Cordialement.