Vérifier que toutes les cellules sont non vides avant lancement de la macro

chris6999

XLDnaute Impliqué
Bonsoir

Je lance une macro d'impression via un clic bouton situé dans ma feuille.
Je souhaiterais que la macro ne s'exécute que si toutes les cellules en saisie obligatoires dans la feuille sont bien "non vides".
Le problème c'est qu'elles sont éparpillées :

Les cellules isolées I6 K6 M6 K21

toutes les cellules de la Plage C12 à D13
toutes les cellules de la PLAGE I10 à M15
toutes les cellules de la plage I23 à M27

Condition sur une des deux cellules
I21 ou I22 Si l'une des deux n'est pas vide c'est bon


Si l'une des cellules citées est vide (sauf dans le cas de I21 et I22 ou l'une des deux peut être vide)
alors MSGBOX d'alerte
sinon la macro se lance

Existe t il un moyen d'écrire simplement ces vérifications préalables au lancement de la macro?

Merci de votre aide
Cordialement
 

kjin

XLDnaute Barbatruc
Re : Vérifier que toutes les cellules sont non vides avant lancement de la macro

bonsoir,
Code:
Dim r1 as Range, r2 as Range
Set r1 = Range("C12:D13,I10:M15,I23:M27,I6,K6,M6,K21")
Set r2 = Range("I21:I22")
If r1.Count <> Application.CountA(r1) Or Application.CountA(r2) = 0 Then
    MsgBox "y a un blème !"
    Exit Sub
End If
A+
kjin
 
Dernière édition:

chris6999

XLDnaute Impliqué
Re : Vérifier que toutes les cellules sont non vides avant lancement de la macro

Re bonsoir Kjin

J'ai essayé ta proposition mais cela ne fonctionne pas. Même si je renseigne toutes les cellules il affiche tj le message d'alerte.
Je te mets un fichier test en PJ pour que tu vois ce que ça donne.
Les zones rouges sont les zones obligatoires.
Je lance la macro en cliquant sur le bouton

Peut-être à plus tard
Merci beaucoup

bonsoir,
Code:
Dim r1 as Range, r2 as Range
Set r1 = Range("C12:D13,I10:M15,I23:M27,I6,K6,M6,K21")
Set r2 = Range("I21:I22")
If r1.Count <> Application.CountA(r1) Or Application.CountA(r2) = 0 Then
    MsgBox "y a un blème !"
    Exit Sub
End If
A+
kjin
 

Pièces jointes

  • TESTCELLULESVIDES.xls
    37 KB · Affichages: 52

Si...

XLDnaute Barbatruc
Re : Vérifier que toutes les cellules sont non vides avant lancement de la macro

salut

Si... tu as de cellules fusionnées tu peux essayer
Code:
Sub vérifiercellulesvides()
  Dim R As Range
  Set R = Range("C12:D13,I10:i12,I6,K6,M6,I25:I27,I21:I22").Find("")
  If Not R Is Nothing Then MsgBox "y a un trou !"
End Sub
 

chris6999

XLDnaute Impliqué
Re : Vérifier que toutes les cellules sont non vides avant lancement de la macro

Bonsoir SI...

cela fonctionne pas mal si ce n'est le contrôle spécifique sur I21 et I22.
C'est pas très grave, je suis déjà très satisfaite de pouvoir contrôler les autres cellules.

Merci encore et une très bonne nuit
Cordialement
 

DoubleZero

XLDnaute Barbatruc
Re : Vérifier que toutes les cellules sont non vides avant lancement de la macro

Bonjour, chris6999, kjin :), Si... :), le Forum,

Un autre essai :

Code:
Sub toto()
Range("c12:d13,i6,k6,m6,i10:i12,i23,i25,i26,i27,j27").Name = "toto"
If Application.WorksheetFunction.CountA(Range("toto")) < 15 Then
MsgBox "Il manque un toto !"
End If
ActiveWorkbook.Names("toto").Delete
End Sub

A bientôt :)
 

kjin

XLDnaute Barbatruc
Re : Vérifier que toutes les cellules sont non vides avant lancement de la macro

Bonjour, salut...Si,
J'ai essayé ta proposition mais cela ne fonctionne pas
Et pour cause...
Tu dois avoir au moins 15 valeurs renseignées dans la plage r1 (si comme dans le fichier il n'y a pas de formule !)
Note que tu as oublié I23:M23
Code:
Sub vérifiercellulesvides()
Dim r1 As Range, r2 As Range
Set r1 = Range("C12:D13,I10:M12,I23:M23,I25:M27,I6,K6,M6")
Set r2 = Range("I21:I22")
If Application.CountA(r1) < 15 Or Application.CountA(r2) = 0 Then
    MsgBox "y a un blème !"
    Exit Sub
End If
End Sub

Edit : bonjour 00 :), ravi de te croiser

A+
kjin
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Vérifier que toutes les cellules sont non vides avant lancement de la macro

salut

désolé d'en être resté qu'au titre donc pour une de 2 cellules vides acceptées, tu peux essayer
Code:
Sub Si()
  Dim R As Range
  Set R = Range("C12:D13,I10:i12,I6,K6,M6,I25:I27").Find("")
  If Not R Is Nothing Or [I21] & [I22] = "" Then _
  MsgBox "pas d'accord pour continuer", vbCritical, "Conditions non requises": Exit Sub
  MsgBox "une minute, je vais faire impression !", vbInformation, "Pour la suite..."
End Sub

bonjour DoubleZero :D, kjin (avec la suite éventuelle ;))
 

chris6999

XLDnaute Impliqué
Re : Vérifier que toutes les cellules sont non vides avant lancement de la macro

Bonsoir et merci à ceux qui m'ont apporté leur aide.
Mon projet est enfin bouclé

Merci encore aux âmes charitables de ce FORUM qui au delà de leur expertise font toujours preuve de créativité.
Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 502
Membres
103 563
dernier inscrit
samyezzehar