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 :

[VBA-Excel] Macro Création Case à cocher


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Bonjour,
    J'ai un problème depuis une journée sur une macro qui me permettrait de compléter un document avec 200 onglets.
    Il faut que je rajoute deux cases à cocher dans chaque onglet.
    Donc je me suis dit pourquoi pas faire un nouvelle macro qui ferais les 200 onglets vite fait (le contenu des onglets sont les mêmes)
    Puis après il faut que je lie chaque case sur un document de rapport :
    Par exemple Onglet 1 :
    -Case a cocher 1 -> liés a la case I2
    -Case a cocher 2 -> liés a la case J2
    Onglet 2
    -Case a cocher 3 -> liés a la case I3
    -Case a cocher 4 -> liés a la case J3
    Etc ..

    Voici le début de mon code :

    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
    Sub Case_cocher()
     
    For i = 1 To 200
     
        Sheets("" & i).Select
        ActiveSheet.CheckBoxes.Add(456, 16.5, 51, 24).Select
        ActiveSheet.Shapes("Check Box " & j).Select
        Selection.Characters.Text = "Nouveau Domaine"
        Selection.ShapeRange.ScaleWidth 1.97, msoFalse, msoScaleFromTopLeft
     
        With Selection
            .Value = xlOff
            .LinkedCell = "Récap!$J$" & i
            .Display3DShading = False
        End With
     
    Next i
     
     
    For j = 1 To 2000
     
        Sheets("" & j).Select
        ActiveSheet.CheckBoxes.Add(591.75, 14.25, 85.5, 30).Select
        ActiveSheet.Shapes("Check Box " & j).Select
        Selection.Characters.Text = "Domaine Renégocié"
        Selection.ShapeRange.ScaleWidth 1.24, msoFalse, msoScaleFromTopLeft
     
        With Selection
            .Value = xlOff
            .LinkedCell = "Récap!$K$" & j
            .Display3DShading = False
         End With
     
    Next j
     
    End Sub
    J'ai déjà une erreur de compilation sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.CheckBoxes.Add(456, 16.5, 51, 24).Select
    Merci d’avance pour vôtre aide

    Personne ne peut m'aider ?

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    il faut éviter les select, activeSheet....selection ...qui sont des source d'erreurs...écrit plutôt un truc du genre !

    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
     
    Dim chk As CheckBox
    For i = 1 To 200
     
       Set chk = Sheets(i).CheckBoxes.Add(456, 16.5, 51, 24)
       With chk
            .Text = "Nouveau Domaine"
            .ShapeRange.ScaleWidth 1.97, msoFalse, msoScaleFromTopLeft
            .Value = xlOff
            .LinkedCell = "Récap!$J$" & i
            .Display3DShading = False
        End With
       Set chk = Sheets(i).CheckBoxes.Add(591.75, 14.25, 85.5, 30)
       With chk
            .Text = "Domaine Renégocié"
            .ShapeRange.ScaleWidth 1.24, msoFalse, msoScaleFromTopLeft
            .Value = xlOff
            .LinkedCell = "Récap!$k$" & i
            .Display3DShading = False
        End With
    Next
    End Sub

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    erreur d'éxecutions 1004 sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set chk = Sheets(i).CheckBoxes.Add(456, 16.5, 51, 24)
    Impossible de lire la propriété Add de la Classe Checkboxes

    Même genre d'erreur que tout à l'heure.

    En tout cas merci pour ton aide.

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et dans ton classeur tu n'as que des feuilles de calculs ( pas des graphiques...? ou feuille de dialogue Excel 5.0)...?

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Le classeur ce présente ainsi :

    Un Onglet Récap qui récapitule tout ce qui est présent dans les autres onglets.

    Puis 200 onglets numérotés de 1 à 200 :
    Dans ces onglets, titre Action 1 à 200.
    Dan chaque onglets il n'y a que des calculs qui sont liés à la feuille Récap.

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    essai de voir la valeur de i au moment du plantage... par exemple en rajoutant .. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    debug.print "Traitement " & i & " .. feuille : " & sheets(i).name
     
    Set chk = Sheets(i).CheckBoxes.Add(456, 16.5, 51, 24)
    puis aprés le l'arrêt voir les messages dans fenêtre exécution (CTRL G)

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Il ne fait pas une boucle entière
    i = 1

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et le nom de la feuille .?

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Récap, effectivement il doit y avoir un problème.
    Car il ne va pas sur la feuille 1.

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tes feuilles s'appellent 1 , 2, ...200..?

    il faut peut-être alors remettre les "" que j'ai enlevé...


  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Mdr je n'avais même pas vu que tu les avais pas mit.
    De toute façon, même érreur.

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par strifer
    Mdr je n'avais même pas vu que tu les avais pas mit.
    De toute façon, même érreur.
    toujours sur la feuille récap ..? ...

    et elle est lancé d'ou ta macro ..?

  13. #13
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Non feuille 1
    mais toujours même erreur.

  14. #14
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut
    Bizarre que ça fasse toujours le même problème.

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben tu lance ta macro d'ou..? as tu essayer d'inserer "manuellement" une case à cocher dans la dite feuille..?

  16. #16
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut ups
    Je viens de comprendre, mon maitre de stage ne m'avait pas dit que sur le nouveau fichier qu'il m'avait donné, chaque onglet était protégé par un mot de passe. (donc au final ca marchait depuis le début )
    Sinon peut être une solution pour enlever tout les mots de passes d'un coup ? (outils>Protection>oter la protection est grisé quand on selectionne tout les onglets)

    Il y a aucune option qui permettent de supprimer les protections en un seul coup ?

    Grrr firefox me fait n'imp.
    Il met une plombe a afficher une page et quand elle est affiché il m'a mi 3 réponse.(j'appuy qu'une fois pourtant)

  17. #17
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    il n'y as pas moyen d'enlever les protections "d'un seul coup" mais tu peu les enlever avant de poser ta case à cocher puis les remettre ensuite... rajoute ces lignes à la boucle vu plus haut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For i = 1 To 200
       Sheets(i).Unprotect bbil
        Set chk = Sheets(i).CheckBoxes.Add(456, 16.5, 51, 24)
      ( ....
      ... )
       Sheets(i).protect bbil
    Next i 
    ...
    PS : J'ai considéré que le mot de passe été le même pour toutes les feuilles et que ton maitre avez utilisé bbil

  18. #18
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Points : 15
    Points
    15
    Par défaut

    Merci je vais tester ça tout de suite.
    Manqué ce n'étais pas Bbil

    Edit: j'avais essayé un truc dans le genre mais ça n'avais pas marché, voyons voir si cette fois est la bonne.

    En tout cas merci, pour vôtre aide.

    EDIT :
    Bizarre, il me dit que le mot de passe est mauvais et que je vérifie ma touche maj
    Et en mettant ce même mot de passe dans la fenêtre oter la protection, ça marche.
    J'ai modifié un peu le code j'ai rajouté les "" avant le i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("" & I).Unprotect ce n'est pas Bibil

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par bbil
    PS : J'ai considéré que le mot de passe été le même pour toutes les feuilles et que ton maitre avez utilisé bbil
    Bah oui, biensur qu'il a utilisé bbil ! qu est ce que tu voulais qu'il mette d'autre??

    Ca va sinon ta tete petit renard? elle enfle pas de trop ?

  20. #20
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    enfait ecrit comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("" & i).Unprotect bbil

    bbil n'est pas le mot de passe mais une variable contenant le mot de passe si bbil est le mot de passe tu peu écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("" & i).Unprotect "bbil"

Discussions similaires

  1. [XL-2013] Besoin d'aide VBA Excel sur les cases a cocher
    Par Mel_38 dans le forum Excel
    Réponses: 4
    Dernier message: 16/05/2014, 16h02
  2. VBA sous excel - Macro - Création de feuilles à partir d'une liste
    Par Sylione dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2007, 10h42
  3. [VBA-Excel] Macro de mise à jour de Report
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 13/07/2006, 12h23
  4. [VBA Excel] macro création de feuille
    Par Viper7 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 29/06/2006, 12h13
  5. [VBA] Excel + macro + aléatoire
    Par spopo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/01/2006, 16h42

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