VBA - Erreur d'exécution "91"
Résolu
Trekiros
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
-
-
Bonjour,
J'essaie d'ouvrir 106 images avec un nom normalisé en "Image (i).png" dans un dossier "images" dans le bureau, et d'en placer une toutes les 5 cases à la ligne 3 sur un fichier excel. Voici comment je m'y suis pris, en m'inspirant beaucoup de morceaux de codes sur internet puisque mes cours de VBA n'ont pas duré jusqu'à l'utilisation de classes ni d'images :
Avec le code ci-dessus, la première image apparait, mais c'est la seule. Le programme me renvoie ensuite le message d'erreur suivant, et les différentes solutions trouvées sur internet n'ont pas abouties
"Erreur d'exécution "91" :
Variable objet ou variable de bloc With non définie."
Le message d'erreur propose de passer au débogage, il surligne la ligne commençant par Sh =, et m'annonce que i=1.
Que dois-je modifier et pourquoi mon code est-il faux ?
Merci d'avance pour toute réponse.
J'essaie d'ouvrir 106 images avec un nom normalisé en "Image (i).png" dans un dossier "images" dans le bureau, et d'en placer une toutes les 5 cases à la ligne 3 sur un fichier excel. Voici comment je m'y suis pris, en m'inspirant beaucoup de morceaux de codes sur internet puisque mes cours de VBA n'ont pas duré jusqu'à l'utilisation de classes ni d'images :
Sub CLICIMAGES() Dim i As Integer Dim Sh As Shape 'Suppression des images déjà présentes For Each Sh In Worksheets(1).Shapes If Sh.Type = msoPicture Then Sh.Delete Next 'Création des nouvelles For i = 1 To 53 * 2 Sh = Worksheets(1).Shapes.AddPicture("C:\Users\Valentin\Desktop\images\Image (" & i & ").png", True, True, Range("C3").Offset(0, i - 1).Left, Range("C3").Top, Range("C3").Width * 4, Range("C3").Height) Next i End Sub
Avec le code ci-dessus, la première image apparait, mais c'est la seule. Le programme me renvoie ensuite le message d'erreur suivant, et les différentes solutions trouvées sur internet n'ont pas abouties
"Erreur d'exécution "91" :
Variable objet ou variable de bloc With non définie."
Le message d'erreur propose de passer au débogage, il surligne la ligne commençant par Sh =, et m'annonce que i=1.
Que dois-je modifier et pourquoi mon code est-il faux ?
Merci d'avance pour toute réponse.
A voir également:
- VBA - Erreur d'exécution "91"
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur d'execution 13 vba ✓ - Forum VB / VBA
- J'aime par erreur facebook notification - Forum Facebook
7 réponses
Bonjour,
Essayer de remplacer la ligne juste après :
Salutations.
Le Pingou
Essayer de remplacer la ligne juste après :
For i = 1 To 53 * 2Par la suivante et sans le [Sh =]
Worksheets(1).Shapes.AddPicture("C:\Users\Valentin\Desktop\images\Image" & i & ".png"), True, True, Range("C3").Offset(0, i - 1).Left, Range("C3").Top, Range("C3").Width * 4, Range("C3").Height
Salutations.
Le Pingou
Trekiros
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
Merci beaucoup, ça a réglé le problème et j'ai repéré ce que j'avais mal fait grâce à toi.
Bonjour, petit bump pour poser une autre question sur le même morceau de code.
Ce que je voulais faire avec cette fonction n'était pas juste d'afficher 106 images, mais aussi de les mettre à jour si elles étaient déjà présentes.
Je n'ai pas trouvé de méthode pour mettre à jour une image donc j'ai pensé que les supprimer puis les recréer au même endroit serait le moyen le plus simple.
Or en testant aujourd'hui mon programme que je pensais avoir terminé, je me suis rendu compte que cette 'mise à jour' des images ne fonctionne pas. Lorsque je modifie une image, l'image correspondante est bien supprimée, lorsqu'elle est recréée, Excel semble restaurer l'ancienne version de l'image. Le seul moyen que j'ai trouvé pour mettre à jour mes 106 images est de fermer Excel, rouvrir mon fichier, et relancer la fonction, ce qui n'est pas ergonomique.
Si quelqu'un connait l'origine de ce problème et une solution, je veux bien son aide.
Ce que je voulais faire avec cette fonction n'était pas juste d'afficher 106 images, mais aussi de les mettre à jour si elles étaient déjà présentes.
Je n'ai pas trouvé de méthode pour mettre à jour une image donc j'ai pensé que les supprimer puis les recréer au même endroit serait le moyen le plus simple.
Or en testant aujourd'hui mon programme que je pensais avoir terminé, je me suis rendu compte que cette 'mise à jour' des images ne fonctionne pas. Lorsque je modifie une image, l'image correspondante est bien supprimée, lorsqu'elle est recréée, Excel semble restaurer l'ancienne version de l'image. Le seul moyen que j'ai trouvé pour mettre à jour mes 106 images est de fermer Excel, rouvrir mon fichier, et relancer la fonction, ce qui n'est pas ergonomique.
Si quelqu'un connait l'origine de ce problème et une solution, je veux bien son aide.
Bonjour,
Je viens de faire un test, si je modifie une image, je supprime les existantes et je remets, j'obtiens sans problème les images avec les modifications.
Tout ceci sans avoir fermé et ou enregistré le classeur.
Avez-vous contrôlé que les anciennes soient bien supprimées ?
Salutations.
Le Pingou
Je viens de faire un test, si je modifie une image, je supprime les existantes et je remets, j'obtiens sans problème les images avec les modifications.
Tout ceci sans avoir fermé et ou enregistré le classeur.
Avez-vous contrôlé que les anciennes soient bien supprimées ?
Salutations.
Le Pingou
Bonjour,
Oui, j'ai un bouton pour les supprimer indépendamment de cette fonction et j'ai fait le test de les supprimer d'abord puis de les recréer après et Excel a quand même restauré la version supprimée.
Même chose si je supprime à la main les images une par une.
Oui, j'ai un bouton pour les supprimer indépendamment de cette fonction et j'ai fait le test de les supprimer d'abord puis de les recréer après et Excel a quand même restauré la version supprimée.
Même chose si je supprime à la main les images une par une.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Vous avez contrôlé que l'image mise à jour est bien dans le dossier utilisé par la procédure ?
Vous avez contrôlé que l'image mise à jour est bien dans le dossier utilisé par la procédure ?
Bonjour,
Oui, c'est bien le cas, sinon elle ne serait pas mise à jour lors de la réouverture d'excel.
Oui, c'est bien le cas, sinon elle ne serait pas mise à jour lors de la réouverture d'excel.
Bonjour,
Merci pour l'information.
Avec mon fichier test basé sur votre premier code cela fonctionne à tous les coups.
Dans le sens ou vous supprimez les images insérées dans votre classeur, la procédure ne peut pas les reprendre que vous fermiez le classeur ou pas.
Je n'arrive pas à comprendre ce qui ce passe chez vous et sans votre fichier c'est impossible dans faire plus.
Merci pour l'information.
Avec mon fichier test basé sur votre premier code cela fonctionne à tous les coups.
Dans le sens ou vous supprimez les images insérées dans votre classeur, la procédure ne peut pas les reprendre que vous fermiez le classeur ou pas.
Je n'arrive pas à comprendre ce qui ce passe chez vous et sans votre fichier c'est impossible dans faire plus.