Controler des cellules vides par VBA

mikael2403

XLDnaute Junior
Bonsoir,

Je sollicite votre aide après plusieurs recherches non abouties.

J'ai créé un classeur avec 2 feuilles.
A l'ouverture du classeur, la 2e feuille est masquée.

Sur la 1ere feuille, l'utilisateur doit renseigner plusieurs cellules et cliquer sur le bouton "Suite" qui exécute une macro permettant d'afficher la 2e feuille et de masquer la 1ere.

Je veux rendre impossible l'exécution de cette macro si certaines cellules telles que K14, U30 et UK14 de la 1ere feuille ne sont pas renseignées.

Peut-on y ajouter un MsgBox avec un message d'erreur invitant l'utilisateur à compléter les cellules qui ne sont pas renseignées et donc empecher d'afficher la feuille 2 ?

Pour aller plus loin, est-ce que ce message est personnalisable selon la/les cellule(s) non renseignée(s), par exemple :
Si la cellule K14, qui correspond à la date, est vide alors le message "Veuillez renseigner : - Date" apparait.
Si les cellules K14 (Date) et U30 (Nom) sont vides alors le message "Veuillez renseigner : - Date - Nom" apparait.

Je vous remercie d'avance pour votre aide très précieuse. :rolleyes:
 

Spitnolan08

XLDnaute Barbatruc
Re : Controler des cellules vides par VBA

Bonsoir,

Une solution :
Code:
Sub MacroMsg()
Dim Plage As Range
Dim i As Byte

With Sheets("Feuil1")
    Set Plage = Union(.Range("K14"), .Range("U30"))
    For i = 1 To Plage.Count
        If Plage(i) = "" Then MsgBox ("Veuilez renseigner la cellule " & Plage(i).Address): Exit Sub
    Next
End With

Sheets("Feuil2").Visible = True
Sheets("Feuil1").Visible = False
End Sub
Cordialement
 

mikael2403

XLDnaute Junior
Re : Controler des cellules vides par VBA

Merci à Spitnolan08 et fred-bene.

La solution de fred-bene est plus adaptée à ce que je cherche.
Cependant, (Désolé, je découvre un peu le VBA et visiblement je n'ai que cette solution) je n'arrive pas à spécifier l'adresse des cellules à vérifier.
Celles-ci ne sont pas collées les unes aux autres. (Ex : K14, U14, U30 etc...)

Dans l'exemple ci-dessous comment je peux spécifier les cellules à vérifier à la place de : 1 to 8

Sub Valide()

Dim i As Integer
Dim l As String


For i = 1 To 8

l = "cellule " & i & " non remplie"
If IsEmpty(Cells(i, 1)) Then MsgBox (l)

Next i

End Sub

Si au dessus de chaque cellule je lui donne un nom, comment le faire apparaitre dans le MsgBox à la place de Cellule 1, 2, 3 etc... ?
Ex : Veuillez renseigner la Date (Date correspond à la cellule K14), puis un autre avec "Veuillez renseigner le Nom (Nom correspond à U14)

Je vous remercie d'avance pour votre aide.
 

mikael2403

XLDnaute Junior
Re : Controler des cellules vides par VBA

Bonsoir,

Je n'ai toujours pas trouvé la solution pour ma question ci-dessus.
J'ai essayé plusieurs choses, mais j'ai des messages d'erreurs ou alors les MsgBox sont toujours les mêmes
Est-ce que quelqu'un peut m'aider ou m'orienter vers la bonne solution ?

Merci d'avance pour votre aide.
 

jeanpierre

Nous a quitté
Repose en paix
Re : Controler des cellules vides par VBA

Bonsoir mikael2403, Spit, Fred-bene, et le forum,

Pourrais-tu indiquer tes premiers messages d'erreurs, il y en a tant..... c'est un peu comme en médecine ou en mécanique.... si on ne sait pas de quoi l'on parle, on n'avance pas....

Peux-tu mettre ton fichier en l'état, avec les solutions proposées, car manifestement c'est du sans filet, là...

Zippé le fichier, c'est mieux, je n'ouvre pas les XLS.... (sous IE, c'est pas le top)

Clic droit sur ton fichier, Envoyer vers/Dossier compressé, et en bas gérer les pièces jointes, rechercher sur ton disque et Uploader....

Perso, je ne te promets aucune réponse car ta question n'est pas trop dans mes cordes.

A te lire néanmoins.

Jean-Pierre
 
Dernière édition:

fred-bene

XLDnaute Occasionnel
Re : Controler des cellules vides par VBA

Génère un tableau qui te permettra de stocker par avance les noms des champs ( ici je l'ai appelé nom ), le redim c'est uniquement pour te montrer une fonction qui te permet de redimensionner un tableau en cours de script.
à chaque ligne n°i correspondra un champs nom(i-1) ( car un champ est toujours déclaré à partir de zéro, il y a un décalage de 1 ).

Regarde le fichier joint. Ca doit correspondre à ce que tu veux.

Si tu veux un truc plus précis mets en ligne un fichier exemple.

@+

Fred
 

Pièces jointes

  • test_plage.xls
    19 KB · Affichages: 88
  • test_plage.xls
    19 KB · Affichages: 97
  • test_plage.xls
    19 KB · Affichages: 91
Dernière édition:

Discussions similaires

Réponses
3
Affichages
162
Réponses
2
Affichages
282

Statistiques des forums

Discussions
314 450
Messages
2 109 729
Membres
110 553
dernier inscrit
loic55