Excel 2007 : MAJ des lignes de la feuille 2 à partir de la feuil
Fermé
coolmek2014
Messages postés
6
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
25 mars 2014
-
20 mars 2014 à 16:38
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 21 mars 2014 à 15:19
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 21 mars 2014 à 15:19
A voir également:
- Excel 2007 : MAJ des lignes de la feuille 2 à partir de la feuil
- Liste déroulante excel - Guide
- Save as pdf office 2007 - Télécharger - Bureautique
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
8 réponses
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
20 mars 2014 à 18:10
20 mars 2014 à 18:10
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
coolmek2014
Messages postés
6
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
25 mars 2014
20 mars 2014 à 18:18
20 mars 2014 à 18:18
merci pour la réponse, mais j'avoue que je n'ai rien compris.
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
20 mars 2014 à 19:31
20 mars 2014 à 19:31
Tu as ouvert le fichier joint et lancer la macro ?
Si tu ne connais pas lire ça :
https://www.commentcamarche.net/faq/37089-vba-premiers-pas-dans-l-editeur-microsoft-visual-basic-for-applications
et ça :
Mise à jour d'une procédure
Si tu as d'autres questions il faudra ta version d'excel.
eric
Si tu ne connais pas lire ça :
https://www.commentcamarche.net/faq/37089-vba-premiers-pas-dans-l-editeur-microsoft-visual-basic-for-applications
et ça :
Mise à jour d'une procédure
Si tu as d'autres questions il faudra ta version d'excel.
eric
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.
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
21 mars 2014 à 09:05
21 mars 2014 à 09:05
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
coolmek2014
Messages postés
6
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
25 mars 2014
21 mars 2014 à 10:34
21 mars 2014 à 10:34
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
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
21 mars 2014 à 11:32
21 mars 2014 à 11:32
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
coolmek2014
Messages postés
6
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
25 mars 2014
21 mars 2014 à 13:52
21 mars 2014 à 13:52
Merci Eric,
Il fait quoi ce bout de code Stp ?
datas = .[A2].Resize(derlig - 1, 8)
Il fait quoi ce bout de code Stp ?
datas = .[A2].Resize(derlig - 1, 8)
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
21 mars 2014 à 15:17
21 mars 2014 à 15:17
Il stocke en mémoire, dans la variable datas, toutes les données sur 8 colonnes.
coolmek2014
Messages postés
6
Date d'inscription
jeudi 20 mars 2014
Statut
Membre
Dernière intervention
25 mars 2014
21 mars 2014 à 14:05
21 mars 2014 à 14:05
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.
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.
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
21 mars 2014 à 15:19
21 mars 2014 à 15:19
sh2.Cells(c.Row, 2) = datas(lig, 5)
2 et 5 sont les colonnes
2 et 5 sont les colonnes