Stopper une macro si cellule vide

Résolu/Fermé
Dimitri020386 Messages postés 5 Date d'inscription vendredi 16 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020 - 16 oct. 2020 à 11:22
Dimitri020386 Messages postés 5 Date d'inscription vendredi 16 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020 - 20 oct. 2020 à 09:07
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
A voir également:

7 réponses

Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
16 oct. 2020 à 11:50
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 !
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
16 oct. 2020 à 12:02
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
0
Dimitri020386 Messages postés 5 Date d'inscription vendredi 16 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020
16 oct. 2020 à 13:37
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.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
16 oct. 2020 à 19:57
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dimitri020386 Messages postés 5 Date d'inscription vendredi 16 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020
19 oct. 2020 à 14:36
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
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
19 oct. 2020 à 16:50
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
0
Dimitri020386 Messages postés 5 Date d'inscription vendredi 16 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020
20 oct. 2020 à 08:43
Super, Je vais essayer ça tout de suite.
J'ai encore beaucoup de choses à apprendre...
Merci
0
Dimitri020386 Messages postés 5 Date d'inscription vendredi 16 octobre 2020 Statut Membre Dernière intervention 20 octobre 2020
20 oct. 2020 à 09:07
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.
0