Test d'existence d'une feuille [RESOLU] [VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 02-04-2014 à 17:07:42
Bonjour,
si vraiment sûr du bien-fondé de la ligne en rouge,
j'ai lu dans une notice Microsoft que la copie d'une feuille de calculs pouvait déclencher une erreur !
Il faudrait essayer d'enregistrer le classeur après chaque copie.
Sinon ne pas utiliser cette méthode, créer d'abord une nouvelle feuille puis y copier les données …
Marsh Posté le 02-04-2014 à 17:32:08
Bonjour et merci pour le retour rapide.
Je suis en effet sûr de la partie en rouge, puisqu'elle fonctionne parfaitement quand la condition est respectée.
Je suis aussi sur de la partie après le Else, puisque la version de la macro que j'utilise actuellement est basé uniquement sur cette partie et ça fonctionne comme prévu.
L'avantage de faire cette nouvelle manip est d'avoir les feuilles organisées comme je le souhaite dans le nouveau classeur (puisque comme vous vous en doutez, c'est au milieu d'une boucle qui va créer puis copier comme ça une grosse 150aine de feuilles dans 8 classeurs différents.
Donc quand toutes les feuilles sont mis les uns à la suite des autres, c'est déjà bien, parce qu'elles sont dans un même classeur, mais faut encore s'y retrouver dans les 30
La problématique sera donc la même si je passe par la création d'une feuille pour copier les données. Cette nouvelle feuille ne sera pas organisée comme je le souhaite.
Je vais continuer à chercher d'autres solutions.
EDIT :
Une solution serai de passer par le gestionnaire d'erreur, avec quelquechose comme ceci :
Code :
|
Suivi à la fin de :
Code :
|
Ca marche bien mais ce n'est que le début de la difficultée !
En effet, par la suite, je me retrouve dans la même situation, mais avec 1 possibilité supplémentaire :
Je m'explique :
Ici j'ai fait : Soit je copie ma feuille à tel endroit, soit je la copie à la fin.
Maintenant je veux : Soit je copie ma feuille à tel endroit, soit je la copie à tel autre, soit à la fin.
Or, puisque j'ai réussi à m'en sortir via le gestionnaire d'erreur pour le début, j'aimerai le faire pour la suite, en incluant une seconde gestion d'erreur, au sein de la première gestion d'erreur, ce qui permettrai :
Si le premier choix marche, ok, sinon erreur et donc second choix. Si le second choix marche, ok, sinon erreur et dernier choix.
Donc ma question est de savoir s'il est possible d'inclure une gestion d'erreur au sein d'une autre ?
Merci d'avance, et désolé pour la colle !
Marsh Posté le 03-04-2014 à 09:41:52
Voici une fonction pour vérifier l'existence d'un classeur et d'une feuille :
Code :
|
Marsh Posté le 03-04-2014 à 09:43:06
Laebruhtra a écrit : |
Un exemple de ce que j'ai essayé, mais qui ne fonctionne pas en l'espèce:
Code :
|
Suivi à la fin de la macro de :
Code :
|
Marsh Posté le 03-04-2014 à 09:53:12
J'ai retrouvé l'article en anglais de Microsoft mais cela correspond à un autre message d'erreur …
Donc soit c'est un souci pas répertorié soit cela vient du code (dont j'ai du mal à visualiser clairement le but) …
Et avec ma fonction ?
Marsh Posté le 03-04-2014 à 10:00:59
Je suis en train d'essayer avec la fonction, ça peut en effet être une solution.
Le but du code est de, à partir de 4 classeurs distincts de chacun plusieurs milliers de lignes, condenser ces 4 tableaux en 4 TCD, puis à partir de ces TCD de les "éclater" (showdetails) en onglets suivant certains critères inclus dans les tableaux de base, et ensuite de réorganiser tous ces onglets issus des 4 TCD en créants plusieurs fichiers.
Je peux upload le fichier si ça t'intéresse.
Marsh Posté le 03-04-2014 à 10:58:15
Rebonjour !
C'est résolu avec une fonction !
Je t'avoue que je ne comprenais pas tout dans la tienne, donc je m'en suis fait une à ma sauce, mais dans tout les cas, tu m'as donné l'idée, donc merci beaucoup !
Je donne les parties du code correspondantes :
La fonction :
Code :
|
Et les différents tests :
Code :
|
Code :
|
Code :
|
Tout ça marche au poil, merci encore pour le coup de main, je met en résolu !
Marsh Posté le 02-04-2014 à 15:33:54
Bonjour,
[RESOLU]
Je fais des macros depuis quelques temps déjà, mais je suis actuellement face à un problème très problématique
En gros, je veux tester si une feuille existe dans mon classeur de macro, et si oui, alors dans ce cas, je copie une autre feuille de ce classeur après une certaine feuille d'un autre classeur.
Si elle n'existe pas, je copie la feuille à la fin de cet autre classeur.
Je vous met le bout de code correspondant :
La ligne d'erreur est en rouge.
Vous remarquerez surement que WS se trouve dans le workbook de la macro, tandis que je souhaite copier dans un autre workbook, mais ce n'est pas bloquant étant donné que WS a déjà été copié dans l'autre workbook.
Pour expliquer l'erreur, dans le cas où la feuille existe (80% des cas), alors pas de soucis, le premier choix marche et la macro continue.
Dans le cas où la feuille n'existe pas, la macro me donne une erreur 9, l'indice ne se trouve pas dans la sélection, en surlignant la ligne en rouge. Or ce que je ne comprends pas, c'est que si elle n'existe pas (ce qui est vrai pour ce cas), alors la macro devrai sauter au Else non ? Le Else qui lui ne pose pas d'erreur.
Merci d'avance
Message édité par Laebruhtra le 03-04-2014 à 10:59:30
---------------
Mon topal ACH/VDS