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.

9test1.zip (16.65 Ko)

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 Sub

Merci 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
Et recommencer cette boucle jusqu'à ce que la macro trouve une ligne vide dans la feuille MAJ

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.

Rechercher des sujets similaires à "mise jour ligne criteres"