[VBA] Lancer Macro si conditions Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
L
Le Drosophile
Membre fidèle
Membre fidèle
Messages : 290
Inscrit le : 27 juin 2018
Version d'Excel : 2016

Message par Le Drosophile » 16 mai 2019, 19:47

Bonsoir,

J'ai fait un code qui fonctionne très bien, sauf que j'ai comme l'impression qu'il fait pas exactement ce à quoi je m'attends.

Le code permet de lancer un UserForm si 2 conditions sont réunies ; et plus précisément celle-ci :

-Si la feuille est vide, alors ouvrir l'UserForm.

Ça marche très bien.

Par ailleurs, si je renseigne des infos dans la feuille ; l'userform ne s'ouvre plus.

Très bien !

Si je supprime les données, que je clique sur une autre feuille, alors l'UserForm ne s'ouvre pas. La feuille est pourtant vide !
Je retourne sur une autre feuille, puis je reviens sur la feuille en question ; et là l'UserForm apparaît.

Sauriez-vous me dire d'où peut bien venir ce phénomène ??

Je joins un document pour illustrer ainsi que le code.
Dim a, b

Private Sub Worksheet_Activate()
    a = 0
    a = Application.WorksheetFunction.CountA(Rows("2:26"))
    
    If a = 0 And b = 0 Then UserForm1.Show
    If a = 0 Then b = 0 Else b = 1
End Sub

Merci de votre attention !
Bonne soirée.
Test01.xlsm
(17.28 Kio) Téléchargé 4 fois
Avatar du membre
galopin01
Passionné d'Excel
Passionné d'Excel
Messages : 6'014
Appréciations reçues : 105
Inscrit le : 18 septembre 2008
Version d'Excel : 2016
Téléchargements : Mes applications

Message par galopin01 » 16 mai 2019, 21:13

bonsoir,
La macro est une macro évènementielle c'est à dire qu'elle s'exécute à l'occasion d'un évènement.
Ici c'est sur activation de la feuille. C'est à dire lorsque que tu arrives sur la feuille. Quand tu en pars, quand elle se vide ou quand il fait beau, il ne se passe rien et la macro ne s'active pas...
A+
Ici c'est un forum Excel/VBA pas Photoshop :
Quand vous amenez votre voiture au garagiste vous lui donnez pas juste la photo ?
L
Le Drosophile
Membre fidèle
Membre fidèle
Messages : 290
Inscrit le : 27 juin 2018
Version d'Excel : 2016

Message par Le Drosophile » 16 mai 2019, 21:49

Bonsoir, merci d'avoir pris le temps de répondre !
Je me suis mal exprimé.
Si je supprime les données, que je clique sur une autre feuille, puis que je retourne sur la feuille initiale alors l'UserForm ne s'ouvre pas. La feuille est pourtant vide ! (et la macro est donc supposé s'activer puisque la feuille vient d'être ouverte)

Après cela, je retourne sur une autre feuille, puis je reviens sur la feuille en question ; et là l'UserForm apparaît.
Il faut que je répète deux fois l'opération (à savoir switcher sur 2 feuilles 2 fois) pour que l'UserForm se lance. Il ne le fait pas dès le premier switch.

Bonne soirée.
L
Le Drosophile
Membre fidèle
Membre fidèle
Messages : 290
Inscrit le : 27 juin 2018
Version d'Excel : 2016

Message par Le Drosophile » 22 mai 2019, 13:21

C'est curieux
L
Le Drosophile
Membre fidèle
Membre fidèle
Messages : 290
Inscrit le : 27 juin 2018
Version d'Excel : 2016

Message par Le Drosophile » 24 mai 2019, 12:18

J'ai simplifié, il restait une variable b que je n'utilise plus. Et tout est rentré dans l'ordre.
Dim a

Private Sub Worksheet_Activate()
    a = 0
    a = Application.WorksheetFunction.CountA(Rows("2:26")) 
    If a = 0 Then UserForm1.Show
    a = 1
End Sub
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message