Incrémentation dans les onglets suivants
Bonjour
Etant un newbie mais plein de bonne volonté, je cherche :-) une solution pour incrémenter automatique des données dans un même classeur à des onglets différents.
pour être plus clair, je souhaiterai qu'une donnée (en l’occurrence un commentaire texte) insérée dans l'onglet 1 dans une cellule (ex A5) se recopie automatiquement vers les onglets suivants (2-3-4-5 ceux vers la gauche dans mon classeur) au même endroit (cellule A5). Par ailleurs, je je modifie la cellule A5 dans l'onglet 4, cela apporte la modification aux onglets suivant: 5.... jusqu'au dernier onglet.
Merci pour l'aide.
Salut Steffcss, Bienvenue sur le forum !
Voici une proposition en utilisant VBA.
Code à copier dans la partie code de chaque feuilles (qui permet d'appeler la procédure)
Private Sub Worksheet_Change(ByVal Target As Range)
Call Recopie_a_la_suite(ActiveSheet, Target)
End SubPuis la procédure en question:
Sub Recopie_a_la_suite(Onglet As Worksheet, LaCellule As Range)
If MsgBox("Voulez-vous recopier la valeur qui vient d'être changé sur tous les onglets suivants ?", vbYesNo, "Demande de confirmation") = vbYes Then
Application.EnableEvents = False
recopie = False
For Each ws In ThisWorkbook.Sheets
ws.Activate
If recopie = True Then
Range(LaCellule.Address) = memoire
End If
If ws.Name = Onglet.Name Then
recopie = True
memoire = LaCellule.Value
End If
Next ws
Application.EnableEvents = True
Onglet.Activate
End If
End SubA adapter selon le besoin.
A+
Gabin
EDIT: Je viens de remarquer cette précision:
2-3-4-5 ceux vers la gauche dans mon classeur
Mon code recopier de Gauche à Droite dans l'ordre des onglets une petite modification sera nécessaire si vous voulez de Droite à Gauche, confirmez moi.
Merci énormément pour la célérité de la réponse.
oui j'aimerai copier de droite vers la gauche
peut on également copier en gardant la meme mise en forme ? par exemple gras/ couleur de la cellule, etc... ?
Merci bcp
et la petite boite de message de confirmation c'est vraiment top !! merci
Re,
Tadam
Le nouveau code:
Sub Recopie_a_la_suite(Onglet As Worksheet, LaCellule As Range)
If MsgBox("Voulez-vous recopier la valeur qui vient d'être changé sur tous les onglets précédants ?", vbYesNo, "Demande de confirmation") = vbYes Then
Application.EnableEvents = False
recopie = False
For i = Worksheets.Count To 1 Step -1
Worksheets(i).Activate
If recopie = True Then
Onglet.Range(LaCellule.Address).Copy
Worksheets(i).Range(LaCellule.Address).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Worksheets(i).Range(LaCellule.Address).Value = Onglet.Range(LaCellule.Address).Value
End If
If Worksheets(i).Name = Onglet.Name Then
recopie = True
End If
Next i
Application.EnableEvents = True
Onglet.Activate
End If
End SubMerci çà marche bien
est ce qu'on peut cibler les cellules qui peuvent être affectées par la macro ?
Je me suis rendu compte que cela affectait des cellules que je ne souhaite pas incrémenter ailleurs...
Où faut il donner les paramètres ?
dans mon tableau je ne souhaite incrémenter que que les cellules H9 à H27 ainsi que H29 à H38 ainsi que H40 à H42 + H47 à 54 H56 à 68
Ensuite j'ai des cellules fusionnées (FGH 74 à 89 + 92 à 94 + 98 à 103 + 105 à 107 + 111 à 115 + 119 à 121 + 123 /124 et 126/127)
en dehors de ces plages, le reste n'a pas besoin d'etre incrémenté dans les onglets suivants.
Bonjour Steffcss,
Le code modifié:
Sub Recopie_a_la_suite(Onglet As Worksheet, LaCellule As Range)
Dim LePlage As Range
Set laplage = Range("H9:H27,H29:H38,H40:H42,H47:H54,H56:H68,FGH74:FGH89,FGH92:FGH94,FGH98:FGH103,FGH105:FGH107,FGH111:FGH115,FGH119:FGH121,FGH123:FGH124,FGH126:FGH127")
If Not Intersect(LaCellule, laplage) Is Nothing Then
If MsgBox("Voulez-vous recopier la valeur qui vient d'être changé sur tous les onglets précédants ?", vbYesNo, "Demande de confirmation") = vbYes Then
Application.EnableEvents = False
recopie = False
For i = Worksheets.Count To 1 Step -1
Worksheets(i).Activate
If recopie = True Then
Onglet.Range(LaCellule.Address).Copy
Worksheets(i).Range(LaCellule.Address).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Worksheets(i).Range(LaCellule.Address).Value = Onglet.Range(LaCellule.Address).Value
End If
If Worksheets(i).Name = Onglet.Name Then
recopie = True
End If
Next i
Application.EnableEvents = True
Onglet.Activate
End If
End If
End SubAu début du code on définit la variable Laplage qui définit la plage de cellules que tu souhaites modifier.
A tester, j'ai peur que les cellules fusionnées posent problèmes c'est jamais très pratique...
A+
Merci encore
Effectivement avec les cellules fusionnées ça ne fonctionne pas, j'ai donc ajusté pour défusionner les cellules et réecrire les plages.
C'est super merci encore :-)