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 Sub

Puis 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 Sub

A adapter selon le besoin.

20steffcss-test1.xlsm (25.10 Ko)

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

17steffcss-test2.xlsm (29.33 Ko)

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 Sub

Merci çà 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 Sub

Au 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 :-)

Rechercher des sujets similaires à "incrementation onglets suivants"