Répétition formule décalée en fonction de la case cochée

Résolu

Bonjour,

je chercherai un moyen pour qu'une macro répète une formule mais décalée en fonction de la case cochée.

Ma structure est la suivante j'ai un tableau que je veux associer avec une case  à cocher quand je clique cette case le programme s'exécute.

Plus bas, j'ai un tableau avec une structure identique à associer avec une autre case à cocher, pareil quand on active la case le programme réalise la même tache/programme mais en se basant sur ce tableau et plus celui au dessus

Aujourd'hui j'utilise une macro par tableau mais j'en ai beaucoup trop je ne peux pas me permettre de continuer de cette manière, auriez vous une solution?

j'ai mis le code contenu dans ma macro (de simples copier/coller)

Sub remplissage_auto()
Worksheets("BP").Select

Range("C4:H6").Copy Worksheets("BP").Range("C14")
Range("C9:H11").Copy Worksheets("BP").Range("C19")
Range("C4:H6").Copy Worksheets("BP").Range("C24")
Range("C9:H11").Copy Worksheets("BP").Range("C29")
End Sub

pour le deuxième tableau j'ai donc la macros ci dessous:

Sub remplissage_auto2()
Worksheets("BP").Select

 
    Range("C57:H59").Copy Worksheets("BP").Range("C67")
    Range("C62: H64").Copy Worksheets("BP").Range("C72")
    Range("C57:H59").Copy Worksheets("BP").Range("C77")
    Range("C62: H64").Copy Worksheets("BP").Range("C82")

End Sub

et ainsi de-suite ...

il y a 54 lignes entre chaques tableaux

Windows / Edge 103.0.1264.49

7 réponses

  1. Hello,

    Peux tu fournir un exemple de fichier vide afin de voir la structure et position de tes cases à cocher / tableaux


    1. Bonjour à tous les deux

      Dans la mesure où tes plages ont la même taille et calées sur la colonne C

      'procedure paramétrée par la première ligne à copier >  li
      Public Sub remplissage(li)
      With Worksheets("BP")
        .Range("C" & li & ":H" & li + 2).Copy .Range("C" & li + 10)
        .Range("C" & li + 5 & ":H" & li + 7).Copy .Range("C" & li + 15)
        .Range("C" & li & ":H" & li + 2).Copy .Range("C" & li + 20)
        .Range("C" & li + 5 & ":H" & li + 7).Copy .Range("C" & li + 25)
      End With
      End Sub

      puis pour tes cases à cocher

      Private Sub CheckBox1_Click()
      Call remplissage(4)
      ' pour décocher
      CheckBox1.Value = False
      End Sub
      
      Private Sub CheckBox2_Click()
      Call remplissage(57)
      ' pour décocher
      CheckBox2.Value = False
      End Sub

      https://www.cjoint.com/c/LGpoVQN1FxB

      Cdlmnt

    2. Contributeur

      bonjour,

      Ne serait-il pas préférable de n'avoir qu'une seule macro, et que la macro détecte sur quel tableau elle doit travailler?
      Cela peut se faire par exemple, si la macro est démarrée via une combinaison de touches, et qu'elle détermine le tableau à partir de la cellule sélectionnée.
      Ou bien si la macro est démarrée en cliquant sur une case et que la position de celle case permette de décider ce qu'il faut faire.

      1. Salut yg_be

        Ne serait-il pas préférable de n'avoir qu'une seule macro, et que la macro détecte sur quel tableau elle doit travailler?

        C'est une bonne idée, comme Ananas a des cases à cocher, j'ai .....

        Cdlmnt

        1. Contributeur

          Il reste une macro par checkbox, ou j'ai pas compris l'approche?

      2. c'est ce qu j'ai cru comprendre

        Plus bas, j'ai un tableau avec une structure identique à associer avec une autre case à cocher, pareil

        Vu la structure, on peut aussi lancer toutes les copies en une seule commande

        1. Contributeur

          Je suggère de faire une seule macro, en utilisant autre chose que des cases à cocher.

      3. Voilà ce qui est possible avec une seul macro pour gèrer l'ensemble des CheckBox sur la feuille

        https://www.cjoint.com/c/LGrkystHAlU

        J'ai repris le code de ccm81 pour le copier/coller des lignes


        1. Contributeur

          Si la checkbox est associée à une cellule, le code peut récupérer l'adresse de cette cellule, au lieu d'utiliser la ligne de la cellule sélectionnée. 

        2. @yg_be

          Oui j'avais testé la propriété LinkedCell ou encore Name  des CheckBox mais disons que c'était plus simple pour l'utilisateur avec la cellule sélectionnée, on peut créer des CheckBox sans s'occuper d'autres choses.

          Mais rien n'empêche d'utiliser ces propriétés. 

        3. Bonjour,

          Désolé pour le délais, les réponses ne se sont affichés avec pas mal de décalage par rapport aux dates de vos réponses  :'-( . C'est exactement ce que je cherchais à faire merci beaucoup pour votre aide à tous! 

      4. En reprenant la suggestion de yg_be, on sélectionne la première cellule du tableau, puis Ctrl+k pour lancer la copie

        https://www.cjoint.com/c/LGrmSDNOdOB

        Cdlmnt

        1. Ca fonctionne très bien aussi mais je préfère le principe des cases à cocher, d'autres personnes que moi devront se servir du programme, je trouve les cases plus visuelles et intuitives. Mais je garde le principe en tête ça resservira forcement à l'avenir. 

          Merci!