Est-ce possible de créer des cases à cocher par macro ?

Choops

XLDnaute Occasionnel
Bonjour à toutes et à tous,

je cherche un moyen d'effectuer un nombre variable de copies incrémentées de cellules d'une même ligne. Si vous ouvrez mon fichier, vous pouvez voir que les couples en Feuille 1 sont formés à partir de la feuille 2. J'aimerais pouvoir faire en sorte que s'il y a 10 couples, une copie incrémentée de A2:G2 soit effectuée 10 fois sur les lignes suivantes automatiquement (cad pas après avoir appuyé sur un bouton).

Là où ça se corse, c'est qu'il y a des cases à cocher aussi à dupliquer et même quand je fais un copie incrémentée à la main, les cases à cocher copiées possèdent toutes la même cellule de référence.

Merci d'avance pour votre aide !
 

Hulk

XLDnaute Barbatruc
Re : Est-ce possible de créer des cases à cocher par macro ?

Hello,

Vois ce fichier s'il te convient..

Un merci à Skooby pour la macro pour ajouter des CheckBox ;)

Sur ce, bonne nuit à tous !
 

Pièces jointes

  • Test case à cocher.xlsm
    39.5 KB · Affichages: 58
  • Test case à cocher.xlsm
    39.5 KB · Affichages: 72
  • Test case à cocher.xlsm
    39.5 KB · Affichages: 79

Choops

XLDnaute Occasionnel
Re : Est-ce possible de créer des cases à cocher par macro ?

Salut Hulk, merci pour ta proposition ! ... qui soulève d'autres questions :)

L'histoire c'est que ce fichier est à utilisations multiples et donc je ne peux pas mettre de constantes mais seulement des variables (nombre d'invités) qui vont souvent dépasser la centaine (d'où le besoin de macro). Je ne comprends pas pourquoi on ne peut pas utiliser [H1].value dans

Code:
 For n = 1 To [H1].Value
        ActiveSheet.Shapes("B " & n).Delete
    Next n

On ne peut pas écrire un équivalent à
Code:
 For n = [H1].Value
?
C'est possible à faire ou pas ?

Qu'en est-il de l'automatisation cad actualisation de la feuille sans avoir à appuyer sur un bouton ?

Est-ce que tu aurais un lien vers le sujet qui contient la macro de Skooby pour que je regarde un peu la discussion ?
 

Hulk

XLDnaute Barbatruc
Re : Est-ce possible de créer des cases à cocher par macro ?

Slt,

Je ne comprends pas pourquoi on ne peut pas utiliser [H1].value dans

For n = 1 To [H1].Value
ActiveSheet.Shapes("B " & n).Delete
Next n
Ben au fait, j'ai testé et si par exemple tu crées 10 CheckBox avec H1 et qu'après t'en crées 4, il va au fait t'en rester 6 puisqu'il efface le même nombre que H1 donc 4 et -> 10 - 4 = 6.

Tu me suis ? Bref, de toutes manières, ai utilisé une boucle For Each pour effacer les objets, c'est mieux..

Même que je n'aime pas trop ce "montage" de bloc, suis presque sûr qu'un bloc de boucles pour le tout suffirait ! À améliorer donc.

Pour ce qui est d'y faire sans bouton, donc à chaque changement dans H1 je suppose, vois le fichier joint, mais franchement pas top et c'est pratiquement la même macro :confused:
Le premier fichier est le même que le premier post, mais juste une boucle For Each pour effacer les trucs.

Voici le lien que tu voulais, mais je ne pense pas qu'il va t'apporter grand chose..
 

Pièces jointes

  • Test case à cocher(V2).xlsm
    32.1 KB · Affichages: 47
  • Test case à cocher sans bouton.xlsm
    30.6 KB · Affichages: 42

Hulk

XLDnaute Barbatruc
Re : Est-ce possible de créer des cases à cocher par macro ?

Re,

Pour faire un poil plus propre et court, tu peux faire comme ceci...
Code:
Private Sub CommandButton1_Click()

    Dim n As Integer
    Dim s As Shape
    Dim cel As Range
    
    On Error Resume Next
    
    Application.ScreenUpdating = False
    
    For Each cel In Range([A2], [A1000].End(xlUp))
        Range("A" & cel.Row & ":C" & cel.Row).Value = ""
        Range("I" & cel.Row & ":K" & cel.Row).Value = ""
    Next cel
    
    For Each s In ActiveSheet.Shapes
        If Left(s.Name, 13) <> "CommandButton" Then
            s.Delete
        End If
    Next s
    
    For n = 1 To [H1].Value
        Range("A" & n + 1).Value = n
        Range("B" & n + 1).Value = Sheets("Feuil2").Range("A" & n).Value
        Range("C" & n + 1).Value = Sheets("Feuil2").Range("B" & n).Value
    Next n
    
    For lign = 1 To [H1].Value
        
        posX1 = Cells(lign + 1, 4).Left
        posY1 = Cells(lign + 1, 4).Top
        largeur1 = Cells(lign + 1, 4).Width
        hauteur1 = Cells(lign + 1, 4).Height
        With ActiveSheet.CheckBoxes.Add(posX1, posY1, largeur1, hauteur1)
            .LinkedCell = Cells(lign + 1, 4).Offset(0, 5).Address
            .Characters.Text = "Seront présents"
            .Name = "Seront présents " & lign
        End With
        
        posX2 = Cells(lign + 1, 5).Left
        posY2 = Cells(lign + 1, 5).Top
        largeur2 = Cells(lign + 1, 5).Width
        hauteur2 = Cells(lign + 1, 5).Height
        With ActiveSheet.CheckBoxes.Add(posX2, posY2, largeur2, hauteur2)
            .LinkedCell = Cells(lign + 1, 5).Offset(0, 5).Address
            .Characters.Text = "A"
            .Name = "A " & lign
        End With
        
        posX3 = Cells(lign + 1, 7).Left
        posY3 = Cells(lign + 1, 7).Top
        largeur3 = Cells(lign + 1, 7).Width
        hauteur3 = Cells(lign + 1, 7).Height
        With ActiveSheet.CheckBoxes.Add(posX3, posY3, largeur3, hauteur3)
            .LinkedCell = Cells(lign + 1, 7).Offset(0, 4).Address
            .Characters.Text = "B"
            .Name = "B " & lign
        End With

    Next lign
    
    Application.ScreenUpdating = True

End Sub
Mais je reste persuadé qu'il est encore améliorable !
 

Choops

XLDnaute Occasionnel
Re : Est-ce possible de créer des cases à cocher par macro ?

Bonjour, j'ai 2 petites questions concernant la macro "Test case à cocher sans bouton.xlsm ". :)

1/ Je ne comprends pas pourquoi on voit les lignes se former une par une à l'écran lors de l'exécution de la macro alors que dans le code il y a bien :
Code:
Application.ScreenUpdating = False
en début de code ? Quelle peut en être la raison ?

2/ Comment traduire en français
Code:
If Not Intersect([H1], Target) Is Nothing Then
? C'est bien cela qui déclenche l'exécution de la macro ?

Merci d'avance !
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat