Excel 2007 : MAJ des lignes de la feuille 2 à partir de la feuil
coolmek2014
Messages postés
6
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
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.
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.
8 réponses
-
Bonjour,
à tester :Sub maj() Dim derlig As Long, lig As Long, col As Long, datas As Variant Dim sh1 As Worksheet, sh2 As Worksheet, c As Range, inconnu As Long Set sh1 = Sheets("Feuil1") Set sh2 = Sheets("Feuil2") 'recup datas With sh1 derlig = .Cells(Rows.Count, "A").End(xlUp).Row datas = .[A2].Resize(derlig - 1, 5) End With ' traitement Application.ScreenUpdating = False For lig = 1 To UBound(datas) If LCase(datas(lig, 5)) = "oui" Then Set c = sh2.[A:A].Find(datas(lig, 1), LookIn:=xlValues, Lookat:=xlWhole) If c Is Nothing Then inconnu = inconnu + 1 Else For col = 2 To 4 sh2.Cells(c.Row, col) = datas(lig, col) Next col End If End If Next lig If inconnu Then MsgBox inconnu & " références non trouvées." End Sub
https://www.cjoint.com/?DCusiXCqa0k
Au cas où, le nombre de références à mettre à jour non trouvées dans feuil2 est annoncé à la fin.
eric
-
merci pour la réponse, mais j'avoue que je n'ai rien compris.
-
Slt Eric,
ça l'air de marcher, je vais la terser demain sur le gros fichier excel.
est ce que c'est possible d'insérer les lignes qui n'ont pas le statut "Oui" au lieu de : If inconnu Then MsgBox inconnu & " références non trouvées."
Je te remercie beaucoup Eric et bonne soirée. -
Bonjour,
Comme ça ?Sub maj() Dim derlig As Long, lig As Long, col As Long, datas As Variant Dim sh1 As Worksheet, sh2 As Worksheet, c As Range Dim cpt1 As Long, cpt2 As Long, inconnu As Long, msg As String Set sh1 = Sheets("Feuil1") Set sh2 = Sheets("Feuil2") 'recup datas With sh1 derlig = .Cells(Rows.Count, "A").End(xlUp).Row datas = .[A2].Resize(derlig - 1, 5) End With ' traitement Application.ScreenUpdating = False For lig = 1 To UBound(datas) If LCase(datas(lig, 5)) = "oui" Then cpt1 = cpt1 + 1 Set c = sh2.[A:A].Find(datas(lig, 1), LookIn:=xlValues, Lookat:=xlWhole) If c Is Nothing Then inconnu = inconnu + 1 Else For col = 2 To 4 sh2.Cells(c.Row, col) = datas(lig, col) Next col End If Else cpt2 = cpt2 + 1 End If Next lig msg = "Oui : " & vbTab & cpt1 & vbLf msg = msg & "Autres : " & vbTab & cpt2 & vbLf & vbLf msg = msg & "Références 'Oui' non trouvées : " & inconnu MsgBox msg End Sub
eric
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
merci Eric,
j'ai 2 autres questions stp ,
- J'ai un décalage des colonnes entre les 2 feuilles:
Feuille1 :
ColA ColE ColF ColG
idt info1 info2 info3
Feuille2:
ColA ColB ColC ColD DateMaj
idt info1 info2 info3 Date
- Dans colonne "DateMaJ", je dois mettre la date du jour pour les lignes qui ont été mises à jour.
Est ce que tu peux m'aider à modifier le prog?
Merci beaucoup -
Il faut mettre le fichier correct dès le début...
J'ai un décalage des colonnes entre les 2 feuilles
Avec 'oui' en colH je suppose ?
Sub maj() Dim derlig As Long, lig As Long, col As Long, datas As Variant Dim sh1 As Worksheet, sh2 As Worksheet, c As Range Dim cpt1 As Long, cpt2 As Long, inconnu As Long, msg As String Set sh1 = Sheets("Feuil1") Set sh2 = Sheets("Feuil2") 'recup datas With sh1 derlig = .Cells(Rows.Count, "A").End(xlUp).Row datas = .[A2].Resize(derlig - 1, 8) End With ' traitement Application.ScreenUpdating = False For lig = 1 To UBound(datas) If LCase(datas(lig, 8)) = "oui" Then cpt1 = cpt1 + 1 Set c = sh2.[A:A].Find(datas(lig, 1), LookIn:=xlValues, Lookat:=xlWhole) If c Is Nothing Then inconnu = inconnu + 1 Else sh2.Cells(c.Row, 2) = datas(lig, 5) sh2.Cells(c.Row, 3) = datas(lig, 6) sh2.Cells(c.Row, 4) = datas(lig, 7) sh2.Cells(c.Row, 5) = Now End If Else cpt2 = cpt2 + 1 End If Next lig msg = "Oui : " & vbTab & cpt1 & vbLf msg = msg & "Autres : " & vbTab & cpt2 & vbLf & vbLf msg = msg & "Références 'Oui' non trouvées : " & inconnu MsgBox msg End Sub
J'ai mis date-heure de modif. Changer format de cellule si tu ne veux afficher que la date.
eric
-
Merci Eric,
Il fait quoi ce bout de code Stp ?
datas = .[A2].Resize(derlig - 1, 8) -
Eric,
une dernière demande,
je vais te joindre un exemple de fichier excel, ou ils sont exactement les collens de la feuille1 et de la feuille2. car je n'arrive pas à les trouver dans le code.