j'ai une petite requète à vous demander... j'ai parcouru le forum, pour m'inspirer de code pour comparer ! J'ai surtout trouver sur la toile des logiciels qui font ce que je demande (et encore en partie)...
J'ai 2 documents :
(doc1.xls) : ma référence de travail
(doc2.xls) : toutes les données du doc1 sont issues de ce doc2, le prb est qu'il n'est pas mise en page, c'est tout brute... les modifications sont assez nombreuses et j'ai déjà passé pas mal de temps à tout compléter à la main...
Je me demandais s'il était possible de faire une sorte de lecture comparative des deux documents et de mettre ainsi le doc1 à jour, fonction des modifications apportées au doc2.
J'ai mis en pj 3 docs, le doc1 sans la mise à jour, le doc 2 avec les données brutes, le doc1 aprés la mise à jour (issues du doc2).
Je vous remercie d'avance pour l'aide et les conseils que vous m'apporterez...
Re : Comparer 2 feuilles, une de réf et une avec données brutes (+compléter là où il
Bonjour Kl1ft,
petite macro et hop!
Code:
Sub traite()
lig = [A:E].Find("*", , , , 1, 2).Row
With Range("A1:E" & lig)
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideVertical).ColorIndex = xlAutomatic
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Font.ColorIndex = xlAutomatic
.Font.Bold = False
End With
End Sub
Youki, ta macro fonctionne trés bien ! Cependant... elle ne correspond au cahier des charges.
Je ne peux pas faire une mise en forme du doc2, il faut que les données soient insérées là où il faut du doc2 vers le doc1... c'est plus complexe que de simplement faire la mise en forme du document.
Mais je te remercie pour ta contribution, cette macro est bien ! et fonctionnelle
Re : Comparer 2 feuilles, une de réf et une avec données brutes (+compléter là où il
Bonsoir
Désolé du retard,
Je pense que tu sauras mettre la macro dans module1(insertion/module) et copie en entier cette macro
A modifier si besoin, ici les 2 fichiers doivent être dans le même répertoire
sinon indiquer le bon chemin ="C:\Documents\"
indiquer le nom du fichier si différent
A vérifier aussi les noms des feuilles ici c'est "Feuil"1
et si besoin reviens ici, j'aurais plus de temps que ces derniers jours
A+
Code:
Sub miseajour()
Dim Wb As Workbook
chemin = ThisWorkbook.Path & "\"
fichier = "Doc2.xls"
Feuil1.Cells.Clear 'efface tout
Set Wb = GetObject(chemin & fichier)
lig = Wb.Sheets("Feuil1").[A:M].Find("*", , , , 1, 2).Row
Wb.Sheets("Feuil1").Range("A1:E" & lig).Copy _
Sheets("Feuil1").[A1]
With Range("A1:E" & lig)
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideVertical).ColorIndex = xlAutomatic
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Font.ColorIndex = xlAutomatic
.Font.Bold = False
End With
End Sub
Complément voici le fichier et macro modifiée pour gestion d'erreur
Re : Comparer 2 feuilles, une de réf et une avec données brutes (+compléter là où il
salut youki, merci encore une fois pour ton aide !!
Je vais être encore un peu exigeant... j'ai vraiment besoin que les nouvelles données soient insérées... en réalité, il y a des informations en face de chaque références (A111, A112...etc...).
Il faut vraiment comparer et insérer les nouvelles références... ça complique la macro.
En tout cas, merci pour ce que tu as fais, c'est vraiment sympa.
Re : Comparer 2 feuilles, une de réf et une avec données brutes (+compléter là où il
Re bonjour,
essaye cette macro,
c'est pas évident, je n'efface rien et je rajoute des lignes et mets la valeur si besoin.
Tiens moi au courant.
Bruno
Code:
Sub miseajour()
Dim Wb As Workbook
chemin = ThisWorkbook.Path & "\"
fichier = "Doc2.xls"
On Error Resume Next
Set Wb = GetObject(chemin & fichier)
If Err > 0 Then MsgBox fichier & " non trouvé": Exit Sub
lig = Wb.Sheets("Feuil1").[A:E].Find("*", , , , 1, 2).Row
With Wb.Sheets("Feuil1")
For Each c In .Range("A1:E" & lig)
If c.Value <> "" Then
If Range(c.Address) <> c.Value Then
If k <> c.Row Then Rows(c.Row).Insert
Range(c.Address) = c.Value: k = c.Row
End If
End If
Next
End With
Exit Sub
'bordures enlever Exit Sub
With Range("A1:E" & lig)
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideVertical).ColorIndex = xlAutomatic
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Font.ColorIndex = xlAutomatic
.Font.Bold = False
End With
End Sub
Re bonjour,
essaye cette macro,
c'est pas évident, je n'efface rien et je rajoute des lignes et mets la valeur si besoin.
Tiens moi au courant.
Bruno
Code:
Sub miseajour()
Dim Wb As Workbook
chemin = ThisWorkbook.Path & "\"
fichier = "Doc2.xls"
On Error Resume Next
Set Wb = GetObject(chemin & fichier)
If Err > 0 Then MsgBox fichier & " non trouvé": Exit Sub
lig = Wb.Sheets("Feuil1").[A:E].Find("*", , , , 1, 2).Row
With Wb.Sheets("Feuil1")
For Each c In .Range("A1:E" & lig)
If c.Value <> "" Then
If Range(c.Address) <> c.Value Then
If k <> c.Row Then Rows(c.Row).Insert
Range(c.Address) = c.Value: k = c.Row
End If
End If
Next
End With
Exit Sub
'bordures enlever Exit Sub
With Range("A1:E" & lig)
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideVertical).ColorIndex = xlAutomatic
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Font.ColorIndex = xlAutomatic
.Font.Bold = False
End With
End Sub
ça marche nickel, dumoins sur les fichiers tests !!
Merci Youki (bruno)
Par contre je ne comprends pas tout... je suis un peu largué !
J'ai fais un algorithme de mon côté, il est composé de 3 boucles IF-Then-Else imbriquées avec des compteurs etc... etc...
J'ai une autre petite question, comment dois-je faire si mes tableaux ne sont pas exactement à la même position. (Cf. Doc1 et Doc2 en pj.) ?
Re : Comparer 2 feuilles, une de réf et une avec données brutes (+compléter là où il
Re bonsoir,
Ajoute des .Offset(ligne,colonne)
ligne.... est le décalage en plus ou en moins (par rapport à la source)
colonne ....idem
Dans l'exemple çi-dessous j'ai seulement fait un décalage de -3 colonnes
J'ai mis au pif...donc revoir le décalage.
Je pense que c'est la méthode la plus simple
Bruno
Code:
If Range(c.Address) <> c.Value Then
If k <> c.Row Then Rows(c.Row).Insert
Range(c.Address).Offset(0,-3) = c.Value: k = c.Row
End If
Re : Comparer 2 feuilles, une de réf et une avec données brutes (+compléter là où il
Salut Bruno,
j'ai rajouté le .Offset(-3, -2) pour test là où tu m'as dis... mais il ne se passe rien... Je ne suis pas doué ! J'essaye de comprendre en même temps, ça se complique
J'ai bien compris le principe de l'Offset, mais lorsque je lance la macro avec la modification, le résultat est le même que sans la modif...
En tout cas, merci encore une fois pour toute ton aide, on arrive à la fin !