Stopper une macro si cellule vide [Résolu]

Signaler
Messages postés
5
Date d'inscription
vendredi 16 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020
-
Messages postés
5
Date d'inscription
vendredi 16 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020
-
Bonjour à tous,

Je me suis mis à la prog. VBA sur Excel depuis l'année dernière pour la création d'un fichier de suivi de finance.

j'ai finalisé une première fois ce fichier mais j'ai repris à zéro toutes les macros de ce fichier pour le simplifier car j'avais beaucoup trop de manip à faire avant de lancer la macro de mise à jour.

J'ai cherché en vain les lignes de code à intégrer au début de ma macro (peut-être n'ai-je pas cherché au bon endroit)

Voici mon problème :

Je dois copier pour 7 onglets différents les cases non-vides situé entre "M8" et "N38" vers les cases situées après les dernières cases non-vides des colonnes "B" et "C"
La dessus je m'en sort.

Avant de copier ces cellules, je souhaite stopper l’exécution de la macro si au moins une des cellules "M8:N8" sur au moins un onglet est vide.
Et par la même occasion d'afficher une fenêtre d'avertissement avec un message.

Si toutes les cellules "M8:N8" sont non-vides, je souhaite bien entendu continuer l’exécution de ma macro.

J'espère avoir été suffisamment clair dans mes explications.
Si ce n'est pas le cas j'essaierai de clarifier les points sombres.

Merci par avance aux personnes qui prendront de leur temps pour lire et m’éclairer sur la résolution de ce problème.

Dimitri

7 réponses

Messages postés
1183
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
28 octobre 2020
117
Bonjour,
il faut mettre
exit sub
après la partie de la macro qui vérifie qu'il n'y ait pas de cellule(s) vide(s).

C'est tout ce que je peux vous dire, sans fichier ni code sous les yeux !
Messages postés
23605
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
31 octobre 2020
6 434
Bonjour,

je confirme, impossible de répondre correctement sans fichier de travail.
On ne sait pas si ce sont des valeurs ou des formules. Si une cellule vide est vraiment vide (sans formule), ou bien si "" doit être considérer comme vide, et j'en passe...
cjoint.com et coller ici le lien fourni
eric
Messages postés
5
Date d'inscription
vendredi 16 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020

OK je comprend.

Voici en lien mon fichier :
https://www.cjoint.com/c/JJqlFZOkhFJ

J'ai bien pris note pour le <gras>exit sub (Merci Yoyo01000)

Je confirme que les cellule seront totalement vide, aucune formule dans celles-ci.
Messages postés
23605
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
31 octobre 2020
6 434
J'ai supposé que tes onglets étaient les 7 derniers, tu aurais pu préciser...
Si ces onglets sont toujours consécutifs ajoute un nom avec pour formule :
=NBVAL('Data Mon épargne:Data ACTIONS EDF'!$M$8:$N$8)=14

Ca calcule le nombre de saisies entre ces 2 feuilles (incluses).
En cas d'évolution tu n'auras que cette formule à modifier.

Dans le code :
If Not [saisiesOK] Then Exit Sub


Si ces feuilles sont sujettes à changement, il peut être intéressant de créer une feuille Début, une autre Fin (adapter la formule) et insérer/supprimer entre les 2 sans oublier d'ajuster le nombre de saisies voulues dans la formule.
eric
Messages postés
5
Date d'inscription
vendredi 16 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020

Merci beaucoup Eric,

Effectivement j'ai complètement zappé de préciser, toutes mes excuses.

Je viens de faire un essai, je ne comprend pas grand chose car j'ai testé ce que tu m'as donner :

"NBVAL("Data Mon épargne:Data ACTIONS EDF" & "M8:N8") = 14
If Not NBVAL Then Exit Sub"


Ne fonctionnant pas, j'ai donc tenté une modif car Visual basic ne veux pas des " ' " et du " ! ".
J'ai donc écris ce qui suit mais je pense que j'ai dû faire une (voir plusieurs) erreur(s) dans l'écriture de mon code.

extractionOK = NBVAL("Data Mon épargne:Data ACTIONS EDF" & "M8:N8") = 14
If Not extractionOK Then Exit Sub


La macro bloque sur "NBVAL"

J'ai un message d'erreur me disant :

"Erreur de compilation:
Sub ou fonction non définie"


Peux-tu me dire ce qui ne va pas?

Je suis sous Microsoft visual basic 7.1, est-il possible que certaines fonctions ne soient compatible qu'avec certaines versions de visual basic?

Et au passage, je suis nouveau sur les forums, comment fait-on pour intégrer dans un encadré les lignes de codes VBA ?

Dimitri
Messages postés
23605
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
31 octobre 2020
6 434
Bonjour,

La formule je ne t'ai pas dit de la mettre dans le code, mais dans un nom.
Dans excel (pas vba) tu vas dans 'Formules / Noms définis / Définir un nom' et tu le crées.

Et dans le code tu utilises le nom que tu as créé, mis entre crochets [ton_nom] ou sous cette forme Range("ton_nom")
eric
Messages postés
5
Date d'inscription
vendredi 16 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020

Super, Je vais essayer ça tout de suite.
J'ai encore beaucoup de choses à apprendre...
Merci
Messages postés
5
Date d'inscription
vendredi 16 octobre 2020
Statut
Membre
Dernière intervention
20 octobre 2020

C'est parfait, ça fonctionne nickel !!!!!

J'ai nénamoins testé sous la forme Range("extractionOK") mais ça ne fonctionne pas.

J'ai donc laissé sous la forme If Not [extractionOK] Then Exit Sub

Merci beaucoup.