Excel 2007 : MAJ des lignes de la feuille 2 à partir de la feuil
coolmek2014
Messages postés
6
Statut
Membre
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 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.
A voir également:
- Excel 2007 : MAJ des lignes de la feuille 2 à partir de la feuil
- Save as pdf office 2007 - Télécharger - Bureautique
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
8 réponses
Bonjour,
à tester :
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
à 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.
ç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 ?
eric
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
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 ?
J'ai mis date-heure de modif. Changer format de cellule si tu ne veux afficher que la date.
eric
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