superbog
XLDnaute Occasionnel
Bonsoir à tous,
Voilà j'ai deux feuilles excel dans deux classeurs différents (dans deux répertoires différents), ci joint fichiers
J'ai mis (merci Job75) une macro private sub directement sur chaque feuille de sorte que chaque fois qu'une ligne est modifiée, une lettre se mette dans une colonne spéciale de cette feuille
Ensuite je dois comparer les deux feuilles pour pour que les cellules A:Q soient toujours identiques quand A=A, sachant que l'une est prioritaire mais que la macro doit partir de l'autre
explication
prioritaire c'est à dire que les modifs secl priment sur celles de affb
si il y a des modifs sur une ligne dans secl et pas dans affb, alors la ligne doit être copiée de secl à affb
si il y a des modifs sur une ligne dans affb et pas dans secl, alors la ligne doit être copiée de affb à secl
MAIS si il y a des modifs sur une ligne dans secl ET dans affb, alors la ligne doit être copiée de secl à affb, secl étant prioritaire
la macro doit impérativement être lancée à partir de affb car l'utilisateur de secl n'a pas accès à affb (par contre évidemment l'utilisateur de affb a accès à secl
La comparaison se fait par la colonne A des deux fichiers.
Et si un numéro existe dans la colonne A de secl mais pas dans la colonne A de affb alors il faut copie la ligne de secl dans affb en fin de page et trier par colonne A.
Enfin avant de fermer je dois vérifier que dans affb les cellules A:A sont bien identiques aux R:R
Help
Voici ce que j'ai fait (au moins ça, ca marche)
merci d'avance de votre aide
Voilà j'ai deux feuilles excel dans deux classeurs différents (dans deux répertoires différents), ci joint fichiers
J'ai mis (merci Job75) une macro private sub directement sur chaque feuille de sorte que chaque fois qu'une ligne est modifiée, une lettre se mette dans une colonne spéciale de cette feuille
Ensuite je dois comparer les deux feuilles pour pour que les cellules A:Q soient toujours identiques quand A=A, sachant que l'une est prioritaire mais que la macro doit partir de l'autre
explication
prioritaire c'est à dire que les modifs secl priment sur celles de affb
si il y a des modifs sur une ligne dans secl et pas dans affb, alors la ligne doit être copiée de secl à affb
si il y a des modifs sur une ligne dans affb et pas dans secl, alors la ligne doit être copiée de affb à secl
MAIS si il y a des modifs sur une ligne dans secl ET dans affb, alors la ligne doit être copiée de secl à affb, secl étant prioritaire
la macro doit impérativement être lancée à partir de affb car l'utilisateur de secl n'a pas accès à affb (par contre évidemment l'utilisateur de affb a accès à secl
La comparaison se fait par la colonne A des deux fichiers.
Et si un numéro existe dans la colonne A de secl mais pas dans la colonne A de affb alors il faut copie la ligne de secl dans affb en fin de page et trier par colonne A.
Enfin avant de fermer je dois vérifier que dans affb les cellules A:A sont bien identiques aux R:R
Help
Voici ce que j'ai fait (au moins ça, ca marche)
VB:
Sub MAJ_TP()
Dim sh1 As Worksheet, sh2 As Worksheet, y&, i&
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier est ouvert
Workbooks.Open "C:\Users\test\secl.xlsm" 'chemin à adapter
Set sh1 = ThisWorkbook.Sheets("affb")
Set sh2 = Workbooks("secl.xlsm").Sheets("secl")
For i = 2 To sh2.Range("B300").End(xlUp).Row
'Copie les valeurs si "M" en colonne R de clients.xlsm
If (sh2.Cells(i, "R")) = "M" Then
For y = 2 To sh1.Range("B300").End(xlUp).Row
If sh1.Cells(y, "A") = sh2.Cells(i, "A") Then
sh1.Cells(y, 2).Resize(, 16) = sh2.Cells(i, 2).Resize(, 16).Value
sh1.Cells(y, "AZ") = "M"
sh2.Cells(i, "R") = ""
End If
Next y
End If
Next i
sh2.Parent.Close True 'facultatif, enregistre et ferme le fichier sh2
sh1.Parent.Save
If IsEmpty(sh1.Range("AZ:AZ")) Then MsgBox "vérification faite, aucune mise à jour base"
MsgBox "base mise à jour et enregistrée"
Application.ScreenUpdating = True
End Sub
merci d'avance de votre aide