Mettre à jour des lignes de la feuille 2 à partir des données de la feuille 1

  • Initiateur de la discussion Initiateur de la discussion coolmek
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

coolmek

XLDnaute Nouveau
Bonjour,

J'ai un gros fichier Excel (vers les 15000 lignes) composé de 2 feuilles, feuille1 et feuille2:
- feuille1:
Idt AA BB CC Statut
111 azetest defrtest tfretest Oui
113 miracle btesr taiwan
115 azer gthy sdffg
122 reza defrgt fhgj
130 qsdftest zdefrtest fhghtest OUi
145 meknes defrgt aleatoire
180 strasbog szqadefr breve
200 wxcvtest gyjutest fhghtest OUI
235 aze defrgt ghjhjj

feuille2:


Idt AA BB CC
111 aze defr hytfre
115 azer gthy sdffg
122 reza defrgt fhgj
130 qsdf szdefr fhgh
200 wxcv gthyju fhgh
235 aze defrgt ghjhjj

j'ai besoin de mettre à jour les lignes de la feuille 2 en recupérant les lignes de la feuille 1 qui ont le statut "Oui"

ce traitement je le lance une fois par semaine.

Je vous remercie d'avance.
 
Re : Mettre à jour des lignes de la feuille 2 à partir des données de la feuille 1

bonjour,

plusieurs questions:

1) as tu un fichier exemple avec juste quelques lignes pour nous aider à commencer. et eviter de faire nous meme un exemple qui risquerait ne pas correspondre à ton besoin
2) je vois que dans la feuille 1, il y a des lignes qui n'existent pas dans la feuille 2: est ce normal?
faut il les créer?
3) lorsque la ligne est repérée "OUI", il faut donc l'updater dans la feuille 2: un simple écrasement suffit?
4) si la ligne est repérée OUI et que justement, elle n'existe pas dans la feuille 2: il faut la crééer .. à la bonne place?
 
Re : Mettre à jour des lignes de la feuille 2 à partir des données de la feuille 1

un début de réponse

Code:
Sub Maj()

With Sheets("Feuil1")
NblignesFeuill1 = Cells(2, 1).End(xlDown).Row

For i = 2 To NblignesFeuill1
    If Cells(i, 5) = "Oui" Then
        'recherche de la ligne en feuille 2 par l'idt
        Idt = Cells(i, 1)
        With Sheets("Feuil2").Range("A1:A36660")
            Set trouvé = .Find(Idt).Rows
            ligne = trouvé.Row
            Sheets("Feuil1").Rows(i).Copy Destination:=.Rows(ligne)
            .Cells(i, 5).Clear
            
        End With
    End If
Next i
        
End With
End Sub
 
Re : Mettre à jour des lignes de la feuille 2 à partir des données de la feuille 1

bonjour,

plusieurs questions:

1) as tu un fichier exemple avec juste quelques lignes pour nous aider à commencer. et eviter de faire nous meme un exemple qui risquerait ne pas correspondre à ton besoin
2) je vois que dans la feuille 1, il y a des lignes qui n'existent pas dans la feuille 2: est ce normal?
faut il les créer?
3) lorsque la ligne est repérée "OUI", il faut donc l'updater dans la feuille 2: un simple écrasement suffit?
4) si la ligne est repérée OUI et que justement, elle n'existe pas dans la feuille 2: il faut la crééer .. à la bonne place?

1) Je vous joins un fichier exemple
2,3,4) Oui c'est normal qu'il y plus de lignes dans la feuille 1 que la feuille 2, en fait plusieurs personnes saisissent des lignes dans la feuille 1 du Lundi au Jeudi, et une personne verifient les lignes et ajoute "Oui" à la colonne Statut.
les lignes qui ont le statut doivent être insérer dans la feuille 2 et mis à jour si ces dernières existent déja dans la feuille 2. On identifie une linge par la colonne Identifiant.

je pense que j'ai répondu à tes questions, n'hésite pas à revenir vers moi si tu as d'autres questions.

Je te remercie.

je pense que
 

Pièces jointes

Re : Mettre à jour des lignes de la feuille 2 à partir des données de la feuille 1

merci pour le code, je l'ai exécuté, il a mis à jour que la première ligne.
est ce que tu peuc commenter le code que s'il te plait, ça m'aidera à le faire évoluer selon mon besoin.

Merci beaucoup.
 
Re : Mettre à jour des lignes de la feuille 2 à partir des données de la feuille 1

Re,

Code:
Sub Maj()

With Sheets("Feuil1")
'recherche du nombres de lignes dans la colonne
NblignesFeuill1 = Cells(2, 1).End(xlDown).Row


For i = 2 To NblignesFeuill1 'pour chaque ligne
    If Cells(i, 5) = "Oui" Then 'si il y a Oui
        'recherche de la ligne en feuille 2 par l'idt
        Idt = Cells(i, 1)
        With Sheets("Feuil2").Range("A1:A36660")
            Set trouvé = .Find(Idt).Rows
            ligne = trouvé.Row 'on récupère l'indice de ligne où l'identifiant a été trouvé
            Sheets("Feuil1").Rows(i).Copy Destination:=.Rows(ligne) 'et on écrase
            .Cells(i, 5).Clear 'et on efface le Oui qui a aussi été copié
            
        End With
    End If
Next i
        
End With
End Sub

1) tu as exécuté la macro et seule la première ligne a été mise à jour..
effectivement, j'avais aussi eu le problème; en fait, l'indicateur Oui, n'est pas toujours écrit de la meme manière: OUI, Oui, oui
la recherche est case sensitive..: il y a une fonction qui permet de s'en affranchir. mais je ne sais plus laquelle..
retrouvé: If ucase(Cells(i, 5)) = "OUI"

le code proposé ne permet pas de créer une nouvelle ligne si celle ci est manquante dans la feuil 2.. il faut donc modifier..
 
Dernière édition:
Re : Mettre à jour des lignes de la feuille 2 à partir des données de la feuille 1

bonjour tous 🙂🙂
on pourrait voir differament !!!
copier a la suite les lignes avec "oui" dans la feuil2 puis supprimer les doubles & remettre dans l'ordre alpha..


a voir ??


ps: en debut de module j'ai mis option compare text pour pb..maju..& minu..
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour