Comment désactiver macro par msgbox?

Résolu/Fermé
moshojo Messages postés 21 Date d'inscription mardi 2 août 2011 Statut Membre Dernière intervention 19 novembre 2013 - 27 oct. 2011 à 15:21
moshojo Messages postés 21 Date d'inscription mardi 2 août 2011 Statut Membre Dernière intervention 19 novembre 2013 - 28 oct. 2011 à 08:31
Bonjour à tous!!

Jai un fichier excel dans lequel j'ai créé plein de macro faisant apparaitre des Msgbox pour aider les utilisateurs du fichier a remplir mon tableau. J'aimerai créer une Msgbox qui s'ouvre en meme temps que s'ouvre le fichier avec deux choix : "Vous avez deja utilisé le fichier", "vous ouvrez le fichier pour la premiere fois" jusque là ça va. La ou je coince c'est que j'aimerai qu'en cliquant sur "vous avez déja utilisé le fichier" certaines macro (mes macros "d'aide" se désactivent.

Vous avez des idées ??

Merci d'avance

Moshojo

A voir également:

2 réponses

H_sergio Messages postés 185 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 29 février 2016 7
27 oct. 2011 à 15:32
bonjour;
juste une idée ; peut être en faisant apparaitre un formulaire Userform à l'ouverture
celui ci comprend deux cases à cocher Checkbox ,lorsque celle affichant avoir déjà utiliser le fichier est cochée , une cellule du fichier a pouvaleur 1 par ex
lorsque les macros se lancent par la suite , si elles voient la cellule =1 elles s'arrètent
je ne sais pas si je suis clair
0
moshojo Messages postés 21 Date d'inscription mardi 2 août 2011 Statut Membre Dernière intervention 19 novembre 2013
27 oct. 2011 à 16:02
Tout d'abord merci pour la rapidité de la réponse!

Je vois ce que tu veux dire, c'est tout à fait clair! et ça marche tres bien.

Par contre, pour les macro écrites dans Private Sub Worksheet_SelectionChange(ByVal Target As Range) ou autre, la condition if cellule=1 then exit sub est valable tout ce qui se trouve dedans

Par exemple dans cette macro : quand on selectionne une cellule, le texte de la ligne saffiche en rouge, et si la cellule se trouve dans certaine colonne, une msgbox apparait. Je vousdrait pour "désactiver la partie sur les msg box mais pas celle sur le format. mais j'en demande peut etre beaucoup ^^







Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Application.Intersect(Target, Range("A4:GM13")) Is Nothing Then 'la mcacro est valable pour la plage A4:GM13


Static AncAdress As Long

If Target.Count > 1 Then Exit Sub 'si plus d'une cellule sélectionnée, la macro s'arrete
If AncAdress <> 0 Then 'remettre en normal
Rows(AncAdress).Interior.ColorIndex = xlNone
Rows(AncAdress).Font.ColorIndex = 0
If ActiveCell.Row >= 4 And ActiveCell.Row <= 800 And ActiveCell.Column >= 133 And ActiveCell.Column <= 139 Then MsgBox ("NE PAS MODIFIER !")
If ActiveCell.Row >= 4 And ActiveCell.Row <= 800 And ActiveCell.Column = 151 Then MsgBox ("NE PAS MODIFIER !")
If ActiveCell.Row >= 4 And ActiveCell.Row <= 800 And ActiveCell.Column = 162 Then MsgBox ("NE PAS MODIFIER !")
If ActiveCell.Row >= 4 And ActiveCell.Row <= 800 And ActiveCell.Column = 175 Then MsgBox ("NE PAS MODIFIER !")
If ActiveCell.Row >= 4 And ActiveCell.Row <= 800 And ActiveCell.Column = 188 Then MsgBox ("NE PAS MODIFIER !")

End If
Target.EntireRow.Font.ColorIndex = 3
Target.EntireRow.Interior.ColorIndex = 2
Target.EntireRow.Interior.Pattern = xlSolid
AncAdress = Target.Row


End If
End Sub
0
H_sergio Messages postés 185 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 29 février 2016 7
27 oct. 2011 à 16:16
pas facile mais avant chaque message, on insère
If ActiveCell.Row >= 4 And ActiveCell.Row <= 800 And ActiveCell.Column = 151 Then
If Range("A1").value="1" then '( la cellule choisie qui affiche 1 ou rien )
GoTo suite1
else
MsgBox ("NE PAS MODIFIER !")
suite1 :
end if
end if
bien sur , suite1 s'appellera suite2 au suivant etc
0
moshojo Messages postés 21 Date d'inscription mardi 2 août 2011 Statut Membre Dernière intervention 19 novembre 2013
28 oct. 2011 à 08:31
Salut,

Super ça marche nikel, j'avais essayé de mettre la condition If Range("A1").value="1" dedans mais je l'avais mise avant le Then.

Merci beaucoup !
0