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 :

Multiples checkbox activant la même macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Multiples checkbox activant la même macro
    Bonjour

    peut-être auriez-vous la solution à mon problème.

    Tous les jours des données sont entrées en ligne dans un tableau (1 ligne par jour avec une dizaine de données). Ces données doivent être validées donc j'ai mis pour cela une checkbox à la fin de chaque ligne qui active une étape de validation (copier coller de la ligne et transfert de certaines données vers une autre feuille).
    Mon but était évidemment de faire une macro unique et non une macro par jour.
    Là où je me suis fait avoir je pense, c'est que je peut pas associer le code de macro à plusieurs checkbox....
    Mon code fonctionne bien mais n'est utilisable que sur une seule checkbox

    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
    59
    60
    61
    62
    63
    64
    65
    66
    Private Sub CheckBox1_Click()
     
    Dim jour As Integer
     
    'On Error GoTo Sortir
     
    Application.ScreenUpdating = False
     
    'RECUPERATION DE LA LIGNE DU JOUR
    'CHAQUE CELLULE DE VALIDATION EST LIEE A UNE CELLULE DE LA COLONNE AB
     
        Set ctrl = ActiveSheet.Shapes("CheckBox1").OLEFormat.Object
        ActiveSheet.Range(ctrl.LinkedCell).Select
        jour = ActiveCell.Row
        'MsgBox (jour)
     
    'DEVEROUILLAGE DE LA PAGE PAR MDP
     
        ActiveSheet.Unprotect
     
    'LES MESURES DU JOUR SONT FIGEES PAR UN COPIER-COLLER DE VALEURS
     
        Range(Cells(jour, 2), Cells(jour, 23)).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
     
    'LES ECARTS SONT REPORTES DANS LA CARTE DE SUIVI
     
        With ActiveSheet
        Set DDJ = .Range("B" & jour)
        Set Ecart_X6 = .Range("E" & jour)
        Set Ecart_X25 = .Range("H" & jour)
        Set Ecart_E6 = .Range("K" & jour)
        Set Ecart_E8 = .Range("N" & jour)
        Set Ecart_E10 = .Range("Q" & jour)
        Set Ecart_E12 = .Range("T" & jour)
        Set Ecart_E15 = .Range("W" & jour)
        End With
     
        Worksheets("Carte").Activate
        Sheets("Carte").Range("B5").EntireRow.Insert
     
        DDJ.Copy
        ActiveSheet.Paste Destination:=ActiveSheet.Range("B5")
        Ecart_X6.Copy
        ActiveSheet.Paste Destination:=ActiveSheet.Range("C5")
        Ecart_X25.Copy
        ActiveSheet.Paste Destination:=ActiveSheet.Range("D5")
        Ecart_E6.Copy
        ActiveSheet.Paste Destination:=ActiveSheet.Range("E5")
        Ecart_E8.Copy
        ActiveSheet.Paste Destination:=ActiveSheet.Range("F5")
        Ecart_E10.Copy
        ActiveSheet.Paste Destination:=ActiveSheet.Range("G5")
        Ecart_E12.Copy
        ActiveSheet.Paste Destination:=ActiveSheet.Range("H5")
        Ecart_E15.Copy
        ActiveSheet.Paste Destination:=ActiveSheet.Range("I5")
     
     
    Application.ScreenUpdating = True
     
    'Sortir:: Exit Sub
     
    End Sub
    Si vous avez une solution pour que mon code fonctionne sur plusieurs checkbox, je suis preneur!

    Merci d'avance pour votre aide

    Physmed

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

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,
    Il y a une discussion récente a propos de ce sujet : https://www.developpez.net/forums/d1...eurs-checkbox/
    Il faut utiliser les modules de classe.

    Par contre, je me permets un commentaire sur ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range(Cells(jour, 2), Cells(jour, 23)).Select
     Selection.Copy
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False
    Tu copies la sélection, puis tu colles sur la même sélection : donc tu ne changes rien ... Evite les Select, il vaut mieux spécifier les Range que tu veux.
    D'autre part, quand tu écris du code sur le forum, utilise la balise code (#), c'est plus simple à lire

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci Riaolle, je vais regarder la discussion

    En ce qui concerne le copier-coller de la même sélection, c'est normal : ces plages de données sont des formules qui utilisent des valeurs de référence que je mets à jour tous les mois. Si je ne copie pas "en dur" mes résultats journaliers, ces plages de données vont se modifier en mettant à jour les valeurs de référence.

    En ce qui concerne le code : GRAND MERCI!! C'est mon premier post et j'ai passé une demi-heure a chercher comment rendre mon code plus lisible.

    Encore merci

    Physmed

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    En ce qui concerne le copier-coller de la même sélection, c'est normal : ces plages de données sont des formules qui utilisent des valeurs de référence que je mets à jour tous les mois. Si je ne copie pas "en dur" mes résultats journaliers, ces plages de données vont se modifier en mettant à jour les valeurs de référence.
    Oui ? Et alors ? Il te suffit de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(jour, 2), Cells(jour, 23)).value = Range(Cells(jour, 2), Cells(jour, 23)).value
    Et je partage totalement ce que t'a dit riaolle en ce qui concerne cette manière de travailler à coups de select, Copy, Paste, etc... au lieu de travailler directement sur les objets.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour unparia

    je suis un gros consommateur d'excel mais pas à l'aise dans le codage. La façon naturelle de faire un copier-coller pour un novice comme moi, c'est d'utiliser Copy et Paste. Évidemment je prends tous les conseils et vais faire en sorte de spécifier les Range.

    Merci à toi

    Physmed

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

Discussions similaires

  1. Activation automatique des macros excels
    Par Rgent dans le forum Excel
    Réponses: 2
    Dernier message: 27/06/2007, 16h54
  2. Controller CheckBoxes ayant le même nom.
    Par JFKen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/08/2006, 11h19
  3. [VBA Excel] Une même macro pour plusieurs CheckBox
    Par Choupett' dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 16/06/2006, 14h54
  4. [JS]Checkbox active/désactive un passwordfield
    Par leminipouce dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/06/2006, 20h22
  5. Réponses: 21
    Dernier message: 31/01/2006, 17h39

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