Macro et mot de passe

Résolu
Bonjour, le Forum,

j'ai un gros problème, j'ai un fichier ou j'ai mis des formules de calcul avec un mot de passe
( erreur d'exécution 1004), ainsi q'une macro, quand j'ouvre l'userform et je clique sur une zone de cette dernière, ma macro se bloque.

Aussi ma question, est ce qu'une macro et des formules avec un mot de passe ne vont pas ensembles ?

Par avance, merci pour me renseigner

Cordialement

Éric2027

12 réponses

  1. Bonsoir

    C'est parfaitement compatible mais qu'as tu protégé ? une feuille ou le classeur ?
    Si ta macro intervient sur la feuille (entrée, modification de données) ou sur sa structure il faut en début de macro déprotéger la feuille ou le classeur et reprotéger avant la sortie

    Impossible d'en dire plus sans voir un exemple de ton fichier et de sa macro

    Cdlmnt
    0
    1. bonsoir via55,

      Je t'envois mon fichier sur cijoint

      http://cjoint.com/?EAwtOf0OeqP

      Par avance, merci, parce quee j'essaie plein de truc et je me perd et puis je n'arrive pas a comprendre

      Si ta macro intervient sur la feuille (entrée, modification de données), je ne trouve pas entrée,
      0
      1. Bonsoir eric

        Quand je disais entrée je parlais d'entrée de données

        Ta macro fonctionne sur les feuilles de ton classeur non protégées et bloque bien sûr sur la feuille protégée, comme je te le disais dans mon précédent message il faut déprotéger la feuille en début de macro et la reprotéger à la fin

        Private Sub GrLabel_Click()
        ActiveSheet.Unprotect ("tonmotdepasse")
          Selection.Interior.Color = GrLabel.BackColor
          Selection.Font.Color = GrLabel.ForeColor
          Selection.Value = GrLabel.Caption
        ActiveSheet.Protect ("tonmotdepasse")
        End Sub


        En remplaçant bien sur tonmotdepasse par ton vrai mot de passe !

        Cdlmnt
        0
        1. via55

          un message qui me bug

          WithEvents GrLabel As Msforms.Label

          alors là, pour moi c'est le néant
          0
          1. J'ai beau essayer divers manipulations, mais rien ni fait, tout me bug
            maintenant c'est "Userform.show" en jaune qui me fait bugger
            0
            1. Re

              As tu modifié la macro comme je t'ai indiqué ?

              Je ne sais pas ce que tu as fait donc pas moyen de savoir ce qui cloche

              Renvoie moi le fichier avec tes modifications et en indiquant surtout le mot de passe utilisé (tu peux en changer avant de m'envoyer le fichier et tu remettras le tien après)

              0
              1. ok, je t'envois mon fichier

                mdp open

                http://cjoint.com/?EAwxlKv9a2F

                j'ai du m'emmêler les pieds mais je ne comprend plus rien certainement la fatigue

                encore mille merci de m'aider et de te prendre ton temps
                0
                1. Je ne sais pas ce que tu as fait sur le second fichier et tu utilises un classmodul avec lequel je ne suis pas familier

                  J'ai repris ton premier fichier qui fonctionnait et remis dans la macro du Classmodul la deprotection et la reprotection de la feuille avec le mot de passe open; j'ai également ajouté une 1ere ligne pour sortir de la macro sans rien faire si on clique au-delà de la colonne 5 , sinon on risquait d'effacer les formules

                  https://www.cjoint.com/?0AwxH3oXBlz

                  Je ne comprends pas tout ce que tu veux faire avec ces manipulations mais je pense que tu te compliques la vie et qu'il y a plus simple pour arriver au même résultat !

                  Cdlmnt

                  "L'imagination est plus importante que le savoir." A. Einstein
                  0
                  1. via,

                    ça marche super bien, je suis encore éblouie par ton savoir sur mon problème, j'ai tellement galéré que j'aurai du demander de l'aide sur CCM, moi qui suis un habitué récurant de ce site parce que vous êtes toujours à l'écoute des gens comme moi qui n'ont pas votre savoir, et vous , vous investissez avec autant de foi et de gentillesse que grâce à vous, à toi , je me sors de cette galère.

                    Une dernière question ; j'ai également ajouté une 1ere ligne pour sortir de la macro sans rien faire si on clique au-delà de la colonne 5 , sinon on risquait d'effacer les formules ,

                    là, je suis à l'ouest, je ne comprend pas ? peux-tu m'expliquer stp
                    0
                    1. Dans Classlabel j'ai rajouté en début de macro cette ligne :
                      If ActiveCell.Column > 5 Then Exit Sub

                      En effet ta macro a pour effet de copier la couleur et le texte choisi dans ta Listbox et de l'appliquer à la cellule active de la feuille (celle dans laquelle on clique), comme pour que cette action puisse avoir lieu la feuille est momentanément déprotégée par la ligne suivante de la macro ActiveSheet.Unprotect ("open"), si on clique par mégarde dans une des 2 colonnes 6 ou 7 (F ou G) la macro fera son travail et du coup effacerait la formule (ce que tu a voulu éviter en protégeant la feuille).
                      D'où la ligne rajoutée, tant qu'on clique dans une colonne inférieure à la 5eme la macro s'effectue sinon il y a sortie (Exit Sub) avant d'effectuer les actions des lignes suivantes

                      Voilà

                      Bonne suite

                      0
                      1. Bonjour via, j'ai refais la macro point par point et c'est génial

                        Encore merci à toi et au Forum.

                        Peux-tu mettre en résolu s'il te plait parce que je n'ai pas accès à résolu.

                        Éric 2027
                        0
                        1. Bonjout
                          pour le plaisir
                          tu a 41 Label

                          Private Sub UserForm_Activate()
                          T = 6
                             For I = 1 To 41
                                Me("Label" & I).BackColor = Sheets("couleurs").Cells(I, 1).Interior.Color
                                Me("Label" & I).ForeColor = Sheets("couleurs").Cells(I, 1).Font.Color
                                Me("Label" & I).Caption = Sheets("couleurs").Cells(I, 1)
                                Me("Label" & I).ControlTipText = Sheets("couleurs").Cells(I, 2)
                                Me("Label" & I).Top = T
                                Me("Label" & I).Height = 12
                                Me("Label" & I).Left = 6
                                Me("Label" & I).Width = 72
                                T = T + 12
                                   Set Lbl(I).GrLabel = Me("Label" & I)
                             Next I
                             With UserForm1 'Enlever 2 si userform 1
                                .Left = 1150 'modifie les chiffre pour faire déplacer la userform
                                .Top = 150
                             End With
                          End Sub
                          

                          A+
                          Maurice
                          0
                          1. Bonjour,

                            j'ai essayé mais cela ne m'apporte rien sinon, bogage
                            @+
                            0