IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tableau de checkbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut Tableau de checkbox
    Bonjour tout le monde,

    Je suis nouveau sur ce forum et je viens vers vous afin de trouver de l'aide pour développer un outils Excel simple et pratique

    Pour l'instant, j'ai besoin de créer des tableaux remplis avec des checkbox et associer chaque case du tableau à la checkbox qui sera dessus.
    Existe-t-il un outil qui puisse faire ça rapidement ? Ou alors Est-ce que je dois insérer les centaines de checkbox à la main et les associer une par une à la case du tableau correspondante ?

    Dans l'attente d'un coup de pouce,

    Merci d'avance

    Edit :
    J'ai réalisé un premier code qui a fait planté Excel ... 2 fois !

    Edit 2 :
    Mon code me génère bien mes checkboxs et dans les bonnes cases du tableau, cependant il n'y aucune cellule lié aux checkboxs ...
    Quelqu'un a-t-il une solution pour ça svp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub addcb()
    '
    ' addcb Macro
    '
     
    '
    Dim numli As Integer
    Dim numcol As Integer
     
    numli = 26 'Initialisation numéro de ligne
    While numli <= 35
    ' Boucle while tourne pour parcourir les lignes de 26 à 35
     
        numcol = 4 'Initialisation numéro de colonne
     
        While numcol <= 10
        ' Boucle while tourne pour parcourir les colonnes de 2 à 8 (B à H)
            Dim top As Double 'Décalaration de la position verticale
            Dim left As Double 'Décalaration de la position horizontale
     
            Cells(numli, numcol).Select
            top = Selection.top 'Affectation valeur position horizontale de la cellule sellectionnée
            left = Selection.left 'Affectation valeur position verticale de la cellule sellectionnée
     
            ActiveSheet.CheckBoxes.Add(left - 5, top + 5, 19, 18).Select 'Création et sélection de la checkbox avec les coordonnées de la cellules
     
            With Selection
     
                .Value = xlOff
                .Display3DShading = False
                .Characters.Text = ""
                .LinkedCell = Cells(numli, numcol) ' Problème ici, je n'ai pas de message d'erreur mais après compilation rien ne s'est passé
     
            End With
     
            numcol = numcol + 1
     
        Wend
     
        numli = numli + 1
     
    Wend
     
    End Sub

  2. #2
    Membre habitué
    Homme Profil pro
    Cadre
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Salut,

    Il te manque juste le .adress après ton cells( ..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub addcb()
    '
    ' addcb Macro
    '
     
    '
    Dim numli As Integer
    Dim numcol As Integer
     
    numli = 26 'Initialisation numéro de ligne
    While numli <= 35
    ' Boucle while tourne pour parcourir les lignes de 26 à 35
     
        numcol = 4 'Initialisation numéro de colonne
     
        While numcol <= 10
        ' Boucle while tourne pour parcourir les colonnes de 2 à 8 (B à H)
            Dim top As Double 'Décalaration de la position verticale
            Dim left As Double 'Décalaration de la position horizontale
     
            Cells(numli, numcol).Select
            top = Selection.top 'Affectation valeur position horizontale de la cellule sellectionnée
            left = Selection.left 'Affectation valeur position verticale de la cellule sellectionnée
     
            ActiveSheet.CheckBoxes.Add(left - 5, top + 5, 19, 18).Select 'Création et sélection de la checkbox avec les coordonnées de la cellules
     
            With Selection
     
                .Value = xlOff
                .Display3DShading = False
                .Characters.Text = ""
                .LinkedCell = Cells(numli, numcol).Address
     
            End With
     
            numcol = numcol + 1
     
        Wend
     
        numli = numli + 1
     
    Wend
     
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut
    Merci
    Ca fonctionne comme il faut !

    Je peux te demander pourquoi il faut rajouter ça ?
    Parce que quand je passe par l'enregistreur de macro il me met pas ça dans le code.

    Bonne journée,

    Merci encore!

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut Programme tout fait et adaptable
    Voilà je partage le code que j'ai fait qui s'adapte à tous.

    4 MsgBox pour entrer les coordonnées de la première et de la dernière cellule à remplir.
    Ensuite ça roule tout seul !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Sub remplir_tableau_checkbox()
    '
    ' Macro permettant de remplir un tableau avec des case à cocher
    '
     
    '
    Dim numli As Integer
    Dim numcol As Integer
     
    Dim firstrow As Integer
    Dim firstcolumn As Integer
    Dim lastrow As Integer
    Dim lastcolumn As Integer
     
    '4 boîte de dialogue pour déterminer les limites du tableau
    firstrow = InputBox("N°Ligne de la première cellule à remplir")
    firstcolumn = InputBox("N°Colonne de la première cellule à remplir")
    lastrow = InputBox("N°Ligne de la dernière cellule à remplir")
    lastcolumn = InputBox("N°Colonne de la dernière cellule à remplir")
     
     
    numli = firstrow 'Initialisation numéro de ligne
    While numli <= lastrow
    ' Boucle while tourne pour parcourir les lignes
     
        numcol = firstcolumn 'Initialisation numéro de colonne
     
        While numcol <= lastcolumn
        ' Boucle while tourne pour parcourir les colonnes
            Dim top As Double 'Décalaration de la position verticale
            Dim left As Double 'Décalaration de la position horizontale
     
            Cells(numli, numcol).Select
            top = Selection.top 'Affectation valeur position horizontale de la cellule sellectionnée
            left = Selection.left 'Affectation valeur position verticale de la cellule sellectionnée
            largeur = Selection.width ' Affectation largeur cellule
            hauteur = Selection.height ' Affectation hauteur cellule
     
            ActiveSheet.CheckBoxes.Add(left, top, largeur, hauteur).Select 'Création et sélection de la checkbox avec les coordonnées et propriétés de la cellules
     
            With Selection
     
                .Value = xlOff
                .Display3DShading = False 'Pas 3D
                .Characters.Text = "" 'Pas de texte à afficher
                .LinkedCell = Cells(numli, numcol).Address 'Association de la cellule du tableau à la checkbox
     
            End With
     
            numcol = numcol + 1 'Boucler colonnes
     
        Wend
     
        numli = numli + 1 'Boucler lignes
     
    Wend
     
    End Sub

  5. #5
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour et bienvenue au forum,

    Même si ton code marche, voici quelques remarques intéressantes pour le développement de tes prochains codes :
    1. Evite d'utiliser Select/Activate/ActiveSheet/Slection etc ..., ça entraîne souvent de problèmes dans le code.
    N'écris PAS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells(numli, numcol).Select
    top = Selection.top
    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    top = Cells(numli, numcol).top
    Utilise éventuellement les blocs With...End With pour alléger le code.
    2. Pourquoi utiliser une boucle While ? Une boucle For me paraît plus appropriée ici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sub remplir_tableau_checkbox()
    ' Macro permettant de remplir un tableau avec des case à cocher
     
    Dim numli As Long
    Dim numcol As Long
     
    Dim firstrow As Long
    Dim firstcolumn As Long
    Dim lastrow As Long
    Dim lastcolumn As Long
     
    firstrow = InputBox("N°Ligne de la première cellule à remplir")
    firstcolumn = InputBox("N°Colonne de la première cellule à remplir")
    lastrow = InputBox("N°Ligne de la dernière cellule à remplir")
    lastcolumn = InputBox("N°Colonne de la dernière cellule à remplir")
     
    For numli = firstrow To lastrow 
        For numcol = firstcolumn To lastcolumn
            With Cells(numli, numcol).Select
                ActiveSheet.CheckBoxes.Add(.left, .top, .width, .height).Select 'Création et sélection de la checkbox avec les coordonnées de la cellules
                With Selection
                    .Value = xlOff
                    .Display3DShading = False
                    .Characters.Text = ""
                    .LinkedCell = Cells(numli, numcol).Address
                End With
        Next numcol
    Next numli
    End Sub
    J'imagine que tu n'auras pas trop de checkboxs à créer, mais en général, quand on travaille sur les lignes et colonnes on utilise des variables Long, car il y a risque de dépasser la capacité des variables Integer. Bon, après, si tu es sûr de ne pas dépasser la capacité de Integer...autant rester en Integer

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut
    Merci !

    J'ai un peu modifié le code parce que le With Cells().Select fonctionnait pas. Et il manquait un End With aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub remplir_tableau_checkbox2()
    ' Macro permettant de remplir un tableau avec des case à cocher
     
    Dim numli As Long
    Dim numcol As Long
     
    Dim firstrow As Long
    Dim firstcolumn As Long
    Dim lastrow As Long
    Dim lastcolumn As Long
     
    firstrow = InputBox("N°Ligne de la première cellule à remplir")
    firstcolumn = InputBox("N°Colonne de la première cellule à remplir")
    lastrow = InputBox("N°Ligne de la dernière cellule à remplir")
    lastcolumn = InputBox("N°Colonne de la dernière cellule à remplir")
     
    For numli = firstrow To lastrow
        For numcol = firstcolumn To lastcolumn
            Cells(numli, numcol).Select
            With Selection
                ActiveSheet.CheckBoxes.Add(.left, .top, .width, .height).Select 'Création et sélection de la checkbox avec les coordonnées de la cellules
                With Selection
                    .Value = xlOff
                    .Display3DShading = False
                    .Characters.Text = ""
                    .LinkedCell = Cells(numli, numcol).Address
                End With
            End With
        Next numcol
    Next numli
    End Sub
    Tu penses que c'est moins lourd pour Excel ce code du coup ?

  7. #7
    Membre habitué
    Homme Profil pro
    Cadre
    Inscrit en
    Octobre 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Cadre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 13
    Par défaut
    Citation Envoyé par KienTong Voir le message
    Merci
    Ca fonctionne comme il faut !

    Je peux te demander pourquoi il faut rajouter ça ?
    Parce que quand je passe par l'enregistreur de macro il me met pas ça dans le code.

    Bonne journée,

    Merci encore!
    Disons que cells(a, b) c'est pour désigner la cellule "ba" mais après que souhaite-t-on dans la cellule ? Son adresse ? Son format de police ? Sa valeur ? Son commentaire ...
    Ici en l'occurrence, on veut son adresse puisque l'argument LinkedCell fonctionne avec une adresse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recuperer un tableau de checkbox
    Par jojo22222 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/05/2006, 08h43
  2. Récupérer un tableau de checkbox !
    Par SunSyS dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/02/2006, 14h36
  3. Tableau de checkbox
    Par rdams dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/08/2005, 17h31
  4. récupérer un tableau de checkbox
    Par mr.t dans le forum ASP
    Réponses: 3
    Dernier message: 05/04/2005, 16h11
  5. Style d'une ligne d'un tableau et Checkbox
    Par echecetmat dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/01/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo