Suspendre macro VBA

Bonjour,

je fais appel à vous pour un petit soucis.

J'ai une page dans laquelle se trouve une macro Worksheet_change. Dans la colonne E de cette feuille se trouve une liste.

J'ai créé une userform qui me permet de selectionner un nom de cette liste.

J'aimerai ensuite qu'il supprime la ligne correspondant à ce nom.

Mais, à cause de la macro, cela bloque le code.

J'ai même essayé de supprimer manuellement cette ligne et je ne parviens à le faire qu'en activant le mode "création", c'est-à-dire en suspendant la macro de ma page.

Comment écrire en vba de "suspendre momentanément ma macro" pour ensuite supprimer la ligne puis réactiver la macro.

Merci de votre aide.

Si vous avez besoin de voir le code pour plus de précision, sans problème.

Merci encore à ceux qui voudront bien essayer.

Bonsoir,

Si j'ai bien compris,

application.enableevents=false

Cdt,

Darzou

bonsoir,

l'instruction suivante va desactiver tous les events (et donc ta macro _change)

Application.EnableEvents=false

pour reactiver

Application.EnableEvents=true

mais ce n'est peut être pas ce que tu souhaites.

une autre manière

définir une variable globale par exemple

global userformactif as boolean

dans Worksheet_change

'ajouter un test au début de la macro

if userformactif=true then exit sub

dans le code du userform à l'endroit adéquat

mettre

userformactif=true

puis ne pas oublier de remettre

userformactif=false

bonsoir Darzou

Merci pour ta réponse Darzou et toi aussi h2so4.

Je penche plutôt pour la seconde solution car c'est la macro de la page "chapitre 1" (selection_change) que j'aimerai arrêter quand je supprime un nom de la page

Mais j'ai un problème quand je tape

global userformactif as boolean

, il refuse en me disant un tas de choses : "erreur de constantes, etc..."

Je ne sais pas grand chose à propos des variables, peut-être que je ne la déclare pas bien ou pas au bon endroit.

Merci si tu veux bien m'expliquer un peu davantage.

Finalement, je l'ai déclarée au début d'un module et ça a eu l'air de la prendre en compte car j'ai ajouté un msgbox à l'activation de ma page "chapitre 1" qui me renvoie "vrai".

Par contre, quand je mets le msgbox au début du selection_change, il ne me renvoie rien et me dit tout de suite que le delete a été impossible.

Donc je ne sais plus quoi faire.

bonsoir,

peux-tu joindre ton fichier ?

Bien sûr, mais je ne sais pas comment joindre un fichier.

Puis-je envoyer seulement les deux pages concernées?

Ou est-ce que je les recopie ici ?

bonsoir,

lorsque que tu réponds, tu trouveras sous les boutons "suvegarder brouillon" " aperçu" "envoyer"

1 onglet option et 1 onglet ajouter des fichiers joints. clique sur cet onglet et suis les instructions.

Je n'ai pas pu joindre tout le fichier car trop volumineux.

Voici les deux codes concernés.

Au fait, ne regarde pas trop les petites erreurs car je n'ai aucune connaissance en vba, je débute donc les choses sont sans doute mal formulées (et les variables non déclarées).

21classeur1.xlsx (7.76 Ko)

Sauf erreur de ma part, votre fichier est vierge...

Cdt,

Darzou

Je n'ai mis que le code en module et feuille. Il faut que je recopie la feuille en entier ?

Ah non, désolée.

Je l'avais enregistré en .xlxs et non .xlxm, c'est peut-être pour cela. C'est corrigé, je crois.

Merci de votre aide en tout cas.

18classeur1.xlsm (51.81 Ko)
cartiers a écrit :

Je n'ai mis que le code en module et feuille. Il faut que je recopie la feuille en entier ?

Je l'avais enregistré en .xlxs et non .xlxm, c'est peut-être pour cela. C'est corrigé, je crois.

Sur un .xlsx, il a du sauter...


Dans votre USF:

Sub valider_Click()
  Flag = True
  '... Reste du code
   Flag = False
End Sub

Dans le module de la feuille:

Sub Worksheet_Change(ByVal Target As Range)
  If Flag Then Exit Sub
  '... Reste du code
End Sub

Dans un nouveau module:

Public Flag As Boolean

Cdt,

Darzou

Merci, mais ça n'a pas l'air de fonctionner. Toujours le même problème. Il n'y a plus de message d'erreur mais la suppression ne se fait pas.

Je suis un peu perdue.

En tout cas, merci de vos réponses.

Je vais avoir besoin d'un fichier complet pour tester, je ne peux rien faire avec le dernier que vous avez uploadé.

Toutes les données ne me sont pas indispensables, j'ai juste besoin d'avoir la structure complète du fichier sans quoi il m'est impossible de tester...

Cdt,

Darzou

Voici le fichier légèrement allégé de pages qui ne devraient pas trop poser de problèmes si elles manquent.

Le problème est quand je suis dans accueil, je clique sur "Nom des élèves", un userform me propose de supprimer des élèves.

Quand je clique sur oui (ne pas demander de bilan), il supprime normalement le nom de certaines pages, supprime la page portant le nom de l'élève et devrait me supprimer le nom de l'élève dans la page "chapitre 1" mais c'est cela qu'il refuse de faire. (l.102 feuil6)

Merci.

Excusez- moi mais après revérification, cela fonctionne bien. Je ne sais pas pourquoi cela n'avait pas fonctionné la fois précédente.

J'ai ajouté à un moment une modification d'une cellule dans la page chapitre 1 juste avant la suppression de ligne pour qu'il entre vraiment dans la macro selection_change afin de la desactiver. Peut-être est-ce cela.

Merci beaucoup.

Rechercher des sujets similaires à "suspendre macro vba"