[Résolu][Excel] Parcours d'un classeur Excel
Dernière réponse : dans Programmation
Bonjour à tous
J'espère que l'un d'entre vous pourra m'aider, je galère sur un souci en VBA depuis vendredi...
Voilà le problème : Pour une de mes macros, j'ai besoin de modifier toutes les images nommées "Image1" d'un classeur Excel. Pour ce faire, j'utilise une boucle For (pour chaque feuille du classeur) et une boucle While à l'intérieur de celle-ci (pour traquer toutes les images).
Apparemment, la logique doit pas être mauvaise, parce que la 1ère feuille est traitée convenablement... mais jamais la seconde v_v
Je copie ici le fragment de la macro qui me pose problème :
Je sais, c'est pas très élégant tout ça >.>
Le déroulement maintenant : le 1er onglet est traité comme il faut, toutes les images sont remplacées. La macro passe au 2nd onglet, toutes les images sont remplacées... et la macro plante juste avant de passer au 3eme. La ligne incriminée me renvoie alors l'erreur "The item with the specified name wasn't found."... Mais ca je le sais bien puisque quand il rencontre cette erreur, il est censé passer à la 3ème feuille de calcul >.<
Ce qui m'agace le plus, c'est le fait qu'il s'exécute parfaitement sur la 1ere feuille v_v
Donc, à vot'bon coeur m'sieurs-dames, si une ame charitable veut bien aider un pauvre débutant en VBA
J'espère que l'un d'entre vous pourra m'aider, je galère sur un souci en VBA depuis vendredi...
Voilà le problème : Pour une de mes macros, j'ai besoin de modifier toutes les images nommées "Image1" d'un classeur Excel. Pour ce faire, j'utilise une boucle For (pour chaque feuille du classeur) et une boucle While à l'intérieur de celle-ci (pour traquer toutes les images).
Apparemment, la logique doit pas être mauvaise, parce que la 1ère feuille est traitée convenablement... mais jamais la seconde v_v
Je copie ici le fragment de la macro qui me pose problème :
For i = 1 To nbFeuilles
On Error GoTo Ign_err_boucle
Worksheets(i).Select
On Error GoTo E
Do While True
ActiveSheet.Shapes("Image1").Select <=C'est cette ligne qui provoque l'erreur "fatale"
hei = Selection.ShapeRange.Height
wid = Selection.ShapeRange.Width
lef = Selection.ShapeRange.Left
top = Selection.ShapeRange.Top
Selection.Delete
ActiveSheet.Paste
Selection.ShapeRange.Height = hei
Selection.ShapeRange.Width = wid
Selection.ShapeRange.Left = lef
Selection.ShapeRange.Top = top
Range("A1").Select
On Error GoTo Ign_err_boucle
Loop
Ign_err_boucle:
On Error GoTo E
Next i
Je sais, c'est pas très élégant tout ça >.>
Le déroulement maintenant : le 1er onglet est traité comme il faut, toutes les images sont remplacées. La macro passe au 2nd onglet, toutes les images sont remplacées... et la macro plante juste avant de passer au 3eme. La ligne incriminée me renvoie alors l'erreur "The item with the specified name wasn't found."... Mais ca je le sais bien puisque quand il rencontre cette erreur, il est censé passer à la 3ème feuille de calcul >.<
Ce qui m'agace le plus, c'est le fait qu'il s'exécute parfaitement sur la 1ere feuille v_v
Donc, à vot'bon coeur m'sieurs-dames, si une ame charitable veut bien aider un pauvre débutant en VBA
Autres pages sur : resolu excel parcours classeur excel
Lassé par la pub ? Créez un compte
Ouh que ça m'énerve de voir des Select/Selection/ActiveTrucs !
(Demande à Freeman23
)
Si tu n'as pas de forme qui s'appelle Image1 sur ta n-ième feuille, c'est normal que ça plante
Pour parcourir les formes de ton classeur, quelque soit leur nombre et leur nom :
(Demande à Freeman23
)Si tu n'as pas de forme qui s'appelle Image1 sur ta n-ième feuille, c'est normal que ça plante
Pour parcourir les formes de ton classeur, quelque soit leur nombre et leur nom :
Dim feuille As Worksheet
Dim forme As Shape
For Each feuille In Worksheets
Debug.Print "Prêt à traiter la feuille " & feuille.Name
For Each forme In feuille.Shapes
Debug.Print "Prêt à traiter la forme " & forme.Name
' // Ton code de remplacement ici.
Next forme
Next feuille
Ben le probleme principal c'est qu'il atteint "jamais" la derniere feuille... il bloque a la seconde j'te dis ^^
(désolé pour les select, au fait
)
Merci beaucoup pour ton aide, je vais tester ce bout de code de ce pas ^^
Edit du lendemain : le code marche, j'ai juste qques modifs a faire et ce sra bon ^^
Merci encore zeb
Mais tu sais pourquoi le code merdait avant la 3eme page ? j'ai commence vba il y a trois semaines seulement, et ca me semble pas super-stable, comme langage... j'me trompe ?
(désolé pour les select, au fait
)Merci beaucoup pour ton aide, je vais tester ce bout de code de ce pas ^^
Edit du lendemain : le code marche, j'ai juste qques modifs a faire et ce sra bon ^^
Merci encore zeb
Mais tu sais pourquoi le code merdait avant la 3eme page ? j'ai commence vba il y a trois semaines seulement, et ca me semble pas super-stable, comme langage... j'me trompe ?
Le langage n'est pas "instable", il est permissif. C'est-à-dire qu'il laisse faire n'importe quoi. Commence par mettre Option Explicit (voir l'aide à ce sujet) au début de tous tes modules.
Je ne connais pas ta feuille, mais le message est clair : "The item with the specified name wasn't found" Il n'y a pas d'image "Image1" dans ta feuille.
Pour les select, ce n'est pas ta faute. Si tu recopies ce que l'enregistreur a écrit pour toi, c'est intelligent... mais pas suffisant.
Hey, quand même !!
Je ne connais pas ta feuille, mais le message est clair : "The item with the specified name wasn't found" Il n'y a pas d'image "Image1" dans ta feuille.
Pour les select, ce n'est pas ta faute. Si tu recopies ce que l'enregistreur a écrit pour toi, c'est intelligent... mais pas suffisant.
Citation :
le code marche
Hey, quand même !!
Le "option explicit" j'le mets deja partout ^^ (c'était conseille sur tous les sites que j'ai visites)
l'objet qu'il retrouve pas c'est "Image 1", justement v_v
donc, a ce que j'ai vu, au premier onglet, il a une erreur "normale" quand il ne trouve pas mon image et passe en page 2. Mais a la seconde page, quand il ne trouve pas l'image, il met une erreur d'execution et non pas une erreur normale -> mon prog comprenait pus rien >.<
N'empeche : la classe, t'as un sacré niveau pour pouvoir aider tous les gens qui passent comme ca ^^
PS (c'est pour ca que j'ai tenu a repondre, mais j'ai oublie de le dire >.>) : j'utilise pas l'enregistreur... si, qd je connais pas une fonction (le code qui permet de lancer une impression rapide par exemple) -> j'lance l'enregistrement, j'execute la commande, je stoppe l'enregistrement. Tous mes "select" sont donc de moi ^^;;
l'objet qu'il retrouve pas c'est "Image 1", justement v_v
donc, a ce que j'ai vu, au premier onglet, il a une erreur "normale" quand il ne trouve pas mon image et passe en page 2. Mais a la seconde page, quand il ne trouve pas l'image, il met une erreur d'execution et non pas une erreur normale -> mon prog comprenait pus rien >.<
N'empeche : la classe, t'as un sacré niveau pour pouvoir aider tous les gens qui passent comme ca ^^
PS (c'est pour ca que j'ai tenu a repondre, mais j'ai oublie de le dire >.>) : j'utilise pas l'enregistreur... si, qd je connais pas une fonction (le code qui permet de lancer une impression rapide par exemple) -> j'lance l'enregistrement, j'execute la commande, je stoppe l'enregistrement. Tous mes "select" sont donc de moi ^^;;
st'horreur quand même !
Si tu parcours les réponses que je propose en VBA (on fait ce qu'on veut hein), 90%, c'est "VIRE-MOI LES SELECT/SELECTION". Je l'ai même écrit dans le topic Vous vous lancez dans le développement de macro Excel ? Lisez ceci !
Ici, http://www.presence-pc.com/forum/ppc/Programmation/macr... Freeman me pose la question de savoir pourquoi.
Si tu parcours les réponses que je propose en VBA (on fait ce qu'on veut hein), 90%, c'est "VIRE-MOI LES SELECT/SELECTION". Je l'ai même écrit dans le topic Vous vous lancez dans le développement de macro Excel ? Lisez ceci !
Ici, http://www.presence-pc.com/forum/ppc/Programmation/macr... Freeman me pose la question de savoir pourquoi.
Et le pire, c'est que depuis lundi (j'ai du attendre mercredi pour pouvoir poster je crois), je les avais lus, tes "petits" combats contre le select ^^
Meme le post que tu m'as donne en lien j'l'avais deja lu, c'est dire... mais comme je viens de debuter vba et que je ne connais pas les instructions les plus utiles (ajoute a ca un patron assez pressé de voir mes macros tourner...), j'ai fait un code assez "crade", même si j'aime po ca v_v
Meme le post que tu m'as donne en lien j'l'avais deja lu, c'est dire... mais comme je viens de debuter vba et que je ne connais pas les instructions les plus utiles (ajoute a ca un patron assez pressé de voir mes macros tourner...), j'ai fait un code assez "crade", même si j'aime po ca v_v
Eh, je cherche tout le temps ! lol
R'garde, j'ai pas (encore) posé d'autre question, et pourtant ya des tas de trucs qui n'ont pas marché... sais pas pourquoi.
Mais j'me debrouille, je contourne les difficultés (je fais des programmes plus complexes mais avec des des fonctionnalités en plus, et ca roule ^^) et J'EVITE LES SELECT, promis
Après, les soucis qui me restent, c'est l'utilisation de Excel, même pas de vba... j'm'y connais plus en programmation qu'en bureautique, moi ^^;;;
R'garde, j'ai pas (encore) posé d'autre question, et pourtant ya des tas de trucs qui n'ont pas marché... sais pas pourquoi.
Mais j'me debrouille, je contourne les difficultés (je fais des programmes plus complexes mais avec des des fonctionnalités en plus, et ca roule ^^) et J'EVITE LES SELECT, promis
Après, les soucis qui me restent, c'est l'utilisation de Excel, même pas de vba... j'm'y connais plus en programmation qu'en bureautique, moi ^^;;;
Lassé par la pub ? Créez un compte
- Contenus similaires :