En VBA tester si une cellule est vide

Avé le forum

Je m'arrache les cheveux avec VBA (Messages d'erreur de tous poils)

Je voudrais déclencher l'ouverture d'un Userform lorsque, par exemple, la cellule N6 est vide, puis n7...jusqu'à N10.Quel est le code VBA ?

Voici ce que j'ai essayé :

 
Sub LANCuseform()
Dim  rgeStyleEpar As Variant
For x = 6 To 10
rgeStyleEpar = Range("n" & x)
If rgeStyleEpar = "" Then
USEFEPARGNE.Show
end if
next  x
end sub

Bien sûr,ça ne fonctionne pas... Pourquoi donc?

Merci !

Bonjour,

Je ne vois de problème à ton code si ce n'est de vérifier que le nom de l'USF correspond à celui qui est dans le code qui est ici "USEFEPARGNE". Ce ne serait pas "USFEPARGNE" par hasard ?

Autre chose, il faut déclarer aussi ta variable x --> Dim x as byte.

A te lire

Dan

Edition : au fait une question me vient à l'esprit, le déclenchement de la macro se fait par bouton ou raccourci clavier ? Ici ta macro n'est pas événementielle, ce qui veut dire qu'elle ne s'exécute que moyennant une action de ta part ou venant d'une autre macro.

Bonjour, et merci pour cette réponse si rapide

Valeur de propriété incorrecte, c'est le MSG d'erreur qui m'est renvoyé à l'éxecution de la macro... J'ai essayé de faire un Dim rgeStyleEpar as String, j'ai la même erreur... Le nom de l'USF est correct...

Alors que se passe-t-il ?

Merci encore

Ach, je n'avais pas vu ta question concernant le déclenchement de la macro... Pour le moment, je la fais démarrer par raccourci clavier (control+a)

Re,

Attention avec CTRL + A, qui est un raccourci excel pour sélectionner la feuillle entière et qui existe de base avec office.

Essaye avec CTRL + H par exemple.

A te lire

Dan

Rere

J'ai changé le raccourci pour cette macro, mais j'ai toujours la même erreur...

Quel malheur !

re,

Quel est le nom de ton USF ?

Vérifie le nom sur l'USFet pas dans ta macro.

Au besoin place ton fichier ici.

A te lire

Dan

Re re re

Je ne pense pas que ça vienne du nom de l'USF, mais plutôt du type de données déclarées avec DIM... Je ne trouve pas le bon type... Je joins un fichier pour que ce soit plus clair

https://www.excel-pratique.com/~files/doc/Parametres_exemple.xls

Merci !

Re,

Plusieurs pb là :

1. Remplace ta macro SUB ... par celle-ci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Byte
Dim rgeStyleEpar As Variant
Workbooks("Parametres.xls").Activate
Sheets(1).Select
For x = 6 To 10
rgeStyleEpar = Range("n" & x)
If rgeStyleEpar = "" Then
USEFEPARGNE.Show
End If
Next x
End Sub

2. Ton pb vient de ROWSOURCE : Peux-tu expliquer ce que tu veux faire exactement lorsque l'USF est affichée ?

A te lire

Dan

RE et Re RE

En fait, je souhaite associer aux comptes Epargne répertoriés en M6:M10 le critère Epargne Bloquée ou NON Bloquée. Si l'utilisateur n'a pas renseigné ce critère pour chaque type d'épargne, l'USF est lancé et demande à l'utilisateur de choisir parmi les 2 options (Bloquée ou pas), puis corrige l'oubli dans la feuille après validation. Ca c'est la théorie, mais étant novice parmi les novices, les subtilités de VBA me sont encore étrangères et je bloque rapidement...

Je viens de m'apercevoir aussi que dans l'initialisation de l'USF, la listbox "NomEpar"était liée à "NomEparVide" (NomEpar.Rowsource = "NomEparVide"),

NomEparVide n'étant pas dimensionné...J'ai corrigé cette erreur, mais ça ne marche toujours pas... et remplacé ma macro placée dans la feuille 1 par la tienne.

J'ai un autre message d'erreur ("erreur d'execution 9: l'indice n'appartient pas à la selection")...Mon PC ne va pas tarder à passer par la fenêtre, je pense...

je joins le fichier modifié au cas ou tu serais plus patient que moi...

https://www.excel-pratique.com/~files/doc/IxvhyParametres_exemple.xls

Merci encore

Bonsoir,

Sur base de tes explications revoici ton fichier avec, je crois, ce que tu demandes.

Attention quand tu fais référence à ton fichier à bien mettre le nom correct de ton fichier dans ta macro. Ici tu avais mis "Paramètres" alors que le fichier s'appelle "paramètres_exemple".

J'ai dû modifier ton fichier au niveau des macros :

  • Macro dans la feuille
  • Macro dans un module
  • macro dans l'USF

Tu verras que j'ai rajouté une liste déroulante pour que tu puisses choisir "Bloquée" ou "non bloquée". De ce fait, la rubrique "Type" peut être enlevée au profit de cette liste déroulante ou même titre que les cases à cocher.

En cas d'ajout de données en colonne K, les données seront reprises dans la liste déroulante de l'USF.

Veille bien conserver les colonnes M, K et N dans ton fichier car elles sont reprises dans l'exécution de tes macros.

Le fichier --> https://www.excel-pratique.com/~files/doc/ZAlqIParametres_exemple.xls

A te lire

Dan

Alors...Deux mots : TROP FORT !

Je pense que j'aurais mis un bout de temps (et quelques PC par la fenêtre) pour aboutir à ce résultat, car il y a dans ce code des termes dont j'ignorais l'existence.Je n'en demandais pas tant, alors un GRAND MERCI, et une petite question : A quoi sert la macro test() ?

Merci de me faire profiter de tes connaissances

Bonjour,

Parfait si cela te convient.

Pour ce qui est de la macro test, elle ne sert à rien. Tu peux la supprimer de même que l'instruction en couleur verte dans la macro CONTROLE. C'est juste parce que j'ai eu un petit souci en travaillant sur ton fichier.

Maintenant ce que tu peux faire, c'est utilser l'instruction en mettant la macro ci-dessous dans THISWORKBOOK puis enregistrer ton fichier avant de le fermer.

Private Sub Workbook_Open()
Application.EnableEvents = True
End Sub

Pourquoi me diras-tu ? Simplement parce que pendant l'exécution la macro VALID CLICK on suspend les événements momentanément (ce que je n'aime pas mais cela est nécessaire dans ton cas).

Si par le pur hasard, ton fichier plantait avant la fin de l'éxcécution de cette macro, Excel mettrait en suspend les macros événemetielless sur n'importe quel fichier (assez embetant de voir qu'un fichier contenant des macros ne fonctionne plus sans savoir pourquoi )

En ouvrant ton fichier, la macro que je te propose ci-avant va éviter ce problème.

Bonne journée

Dan

Bonsoir,

Merci pour toutes ces infos, j'ai placé la macro dans le Workbook.

En examinant le code du USF, il y a une ligne dont je ne comprends pas le fonctionnement, bien que je saisisse à quoi elle sert (définition de la liste de validation); si tu as le temps, j'aimerais avoir quelque éclaircissement sur sa façon de fonctionner :

For i = 4 To Sheets("feuil1").Range("k100").End(xlUp).Row

Mais je ne voudrais pas abuser de ta générosité.Donc pas de souci si je n'ai pas de réponse.

Bonne soirée

Salut gelonleup,

tu as une colonne K qui contient un nombre variable d'éléments pour alimenter la liste.

Avec Sheets("feuil1").Range("k100").End(xlUp).Row

Tu te positionne sur la cellule K100 qui est supposée représenter le plus grand nombre d'éléments possible.

Ensuite tu remontes pour trouver la dernière cellule non vide.

Arrivé sur celle là tu récupère son numéro de ligne (Ici ce serait 5)

Donc tu alimente la liste en lisant les éléments depuis le premier (ligne 4) jusqu'au dernier (ligne 5)

Est-ce que tu piges ?

A+

F.

Bonsoir,

Pour compléter l'intervention de François, si tu regardes dans cette colonne K tu as actuellement deux valeurs qui sont "bloquée" et "non bloquée.

Ces deux valeurs sont situées en K4 et K5. d'où la valeur i=4 dans la macro.

En mettant K100, je dis à la macro de reprendre les valeurs comprises entre K4 et K100.

Ne sachant pas combien de valeurs tu envigeais mettre, j'ai pris la précaution de prévoir te laisser le choix d'en encoder jusque K100.

Si tu es sûr de ne pas mettre d'autres valeurs tu peux remplacer K100 par K5. Mais si tu laisses K100, ne mets pas de valeurs entre K6 et K100 qui ne concerne pas la liste déroulante se trouvant dans l'USF.

SI pb n'hésite pas

A te lire

Dan

Avé la communauté

Ok j'ai bien tout pigé... Je n'ai pas eu le temps de mettre tout ça en pratique, mais dès que j'ai un moment, pas de souci, je trouverai bien une question à poser...

Merci pour toutes ces informations !

Rechercher des sujets similaires à "vba tester vide"