Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Prise de tete pour inserer des images

3 réponses
Avatar
Olivier
Bonjour, ce post est un peu long mais il contient les macros que j'ai créés
afin que quelqu'un puisse les tester et me dire surtout pourquoi ça ne
marche pas : cela fait bientot 20 h que je suis dessus et que je ne
comprends plus rien.
Voilà ce qui se passe : (je suis sous excel 97)
En feuille 1 j'ai une image nomme Image1 dans laquelle j'ai inseré une
photo.
En feuille 3, j'ai 4 boutons dont voici les codes :

Private Sub CommandButton1_Click()
mise_en_place_carte_dans_feuil3 'crée 20 images nommé image1 à image20
disposés en 4 lignes et 5 colonnes
End Sub

Private Sub CommandButton2_Click()
mise_en_face_cache_carte 'met sur les 20 images image1 à image20 la photo
contenu dans la feuille 1
End Sub

Private Sub CommandButton3_Click()
suppression_carte_dans_feuil3 'supprime les 20 images
End Sub

Private Sub CommandButton4_Click() 'fait tout
suppression_carte_dans_feuil3 'avec une gestion d'erreur pour éviter le cas
où il n'y a pas d'images en feuillle 3
mise_en_place_carte_dans_feuil3
mise_en_face_cache_carte
End Sub

Si on clique dans l'ordre Bouton1, Bouton2, Bouton3 plusieurs fois de suite.
Cela marche comme je le veux.
Si on clique une fois sur le bouton 4, Ca marche aussi. MAIS un nouveau clic
sur le bouton 4 provoque une erreur (avec des creations d'image21, image22,
et les images ne sont plus dans l'ordre). Et je ne vois pas d'où cela peut
venir. Je joins ci-dessous le code du module1 et je peux même envoyer en
privé le fichier excel si quelqu'un le désire. Mon but est bien sur d'avoir
un seul bouton, j'ai créé les boutons individuels (et les msgbox dans les
procedures) pour essayer de comprendre
d'où venait le problème, mais cela ne m'a pas avancé.
Merci pour votre aide.
Olivier

Sub mise_en_place_carte_dans_feuil3()
'rq : mettre sur le bouton la propriété TakeOnFocus à False pour ne pas
prendre le focus sinon on ne peut afficher les images
'CREATION des emplacements des cartes
Sheets("Feuil3").Select
dimx_image = 54
dimy_image = 78
espx_image = 5 'espace entre deux images
espy_image = 5
debutx_image1 = 10 ' left position de la 1ere image
debuty_image1 = 15 ' top position de la 1ere image
For i = 0 To 3
For j = 0 To 4
posx = debutx_image1 + j * (dimx_image + espx_image)
posy = debuty_image1 + i * (dimy_image + espy_image)
n = 5 * i + j + 1 'numero de l'image
MsgBox Format(n) 'juste pour voir le deroulement
Feuil3.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False,
DisplayAsIcon:=False, Left:=posx, Top:=posy, Width:=dimx_image,
Height:=dimy_image).Select
Next j
Next i
MsgBox "fin"
End Sub

Sub mise_en_face_cache_carte()
For i = 1 To 20
MsgBox "cache " & Format(i) 'juste pour voir le deroulement
Feuil3.OLEObjects("Image" & i).Object.Picture = Feuil1.Image1.Picture
Sheets("Feuil3").Select 'pour afficher les cartes au fur et à mesure ???
Next i
End Sub

Sub suppression_carte_dans_feuil3()
On Error Resume Next 'pour eviter une erreur si il n'y a pas d'image
For i = 1 To 20
Feuil3.Shapes("Image" & i).Delete
Next i
End Sub

3 réponses

Avatar
MichDenis
Bonjour Olivier,

Comme on ne connaît pas ce que contient chaque procédure, c'est plutôt difficile de savoir ... !

Cependant, tu dois faire attention à la façon dont tu nommes tes images lors de leur création.

Excel utilise un compteur interne qu'il utilise pour incrémenter les objets ajoutés à la feuille. À titre d'exemple, à
chaque fois que tu ajoutes une feuille, il incrémente l'indexe ... Feuil4, Feuil5 ...., le fait de supprimer une feuille
ne change rien à cet effet de chose... sauf si tu fermes le classeur et que tu le ré-ouvres....Excel à remis son
compteur à 1... et si certain numéro de feuille ont été supprimé, il va les recréer ....et là, cela modifie la
numérotation des objets.

Si tu fais une boucle sur tes contrôles en utilisant l'index de tes images...la numérotation n'étant plus la bonne ...
ta procédure va planter !

Comment arriver à faire une gestion de l'appellation de tes images... cela dépend de ce que tu as besoin de réaliser et
comment tu le réalises.


Salutations!




"Olivier" a écrit dans le message de news: 4221dc25$0$312$
Bonjour, ce post est un peu long mais il contient les macros que j'ai créés
afin que quelqu'un puisse les tester et me dire surtout pourquoi ça ne
marche pas : cela fait bientot 20 h que je suis dessus et que je ne
comprends plus rien.
Voilà ce qui se passe : (je suis sous excel 97)
En feuille 1 j'ai une image nomme Image1 dans laquelle j'ai inseré une
photo.
En feuille 3, j'ai 4 boutons dont voici les codes :

Private Sub CommandButton1_Click()
mise_en_place_carte_dans_feuil3 'crée 20 images nommé image1 à image20
disposés en 4 lignes et 5 colonnes
End Sub

Private Sub CommandButton2_Click()
mise_en_face_cache_carte 'met sur les 20 images image1 à image20 la photo
contenu dans la feuille 1
End Sub

Private Sub CommandButton3_Click()
suppression_carte_dans_feuil3 'supprime les 20 images
End Sub

Private Sub CommandButton4_Click() 'fait tout
suppression_carte_dans_feuil3 'avec une gestion d'erreur pour éviter le cas
où il n'y a pas d'images en feuillle 3
mise_en_place_carte_dans_feuil3
mise_en_face_cache_carte
End Sub

Si on clique dans l'ordre Bouton1, Bouton2, Bouton3 plusieurs fois de suite.
Cela marche comme je le veux.
Si on clique une fois sur le bouton 4, Ca marche aussi. MAIS un nouveau clic
sur le bouton 4 provoque une erreur (avec des creations d'image21, image22,
et les images ne sont plus dans l'ordre). Et je ne vois pas d'où cela peut
venir. Je joins ci-dessous le code du module1 et je peux même envoyer en
privé le fichier excel si quelqu'un le désire. Mon but est bien sur d'avoir
un seul bouton, j'ai créé les boutons individuels (et les msgbox dans les
procedures) pour essayer de comprendre
d'où venait le problème, mais cela ne m'a pas avancé.
Merci pour votre aide.
Olivier

Sub mise_en_place_carte_dans_feuil3()
'rq : mettre sur le bouton la propriété TakeOnFocus à False pour ne pas
prendre le focus sinon on ne peut afficher les images
'CREATION des emplacements des cartes
Sheets("Feuil3").Select
dimx_image = 54
dimy_image = 78
espx_image = 5 'espace entre deux images
espy_image = 5
debutx_image1 = 10 ' left position de la 1ere image
debuty_image1 = 15 ' top position de la 1ere image
For i = 0 To 3
For j = 0 To 4
posx = debutx_image1 + j * (dimx_image + espx_image)
posy = debuty_image1 + i * (dimy_image + espy_image)
n = 5 * i + j + 1 'numero de l'image
MsgBox Format(n) 'juste pour voir le deroulement
Feuil3.OLEObjects.Add(ClassType:="Forms.Image.1", Link:úlse,
DisplayAsIcon:úlse, Left:=posx, Top:=posy, Width:=dimx_image,
Height:=dimy_image).Select
Next j
Next i
MsgBox "fin"
End Sub

Sub mise_en_face_cache_carte()
For i = 1 To 20
MsgBox "cache " & Format(i) 'juste pour voir le deroulement
Feuil3.OLEObjects("Image" & i).Object.Picture = Feuil1.Image1.Picture
Sheets("Feuil3").Select 'pour afficher les cartes au fur et à mesure ???
Next i
End Sub

Sub suppression_carte_dans_feuil3()
On Error Resume Next 'pour eviter une erreur si il n'y a pas d'image
For i = 1 To 20
Feuil3.Shapes("Image" & i).Delete
Next i
End Sub
Avatar
Olivier
Merci MichDenis
Cela m'éclaire un peu même si cela reste encore flou.
Ce que je veux faire est expliqué à l'aide des procédures (elles sont à la
fin du message. c'est vrai qu'elles sont mal placées car après ma
signature). Si tu peux m'aider un peu plus en me disant comment créer mes
images et les supprimer et les recréer en conservant les noms et l'ordre
Image1 à Image20. Ce serait sympa.
Merci

"MichDenis" a écrit dans le message de news:
OH#
Bonjour Olivier,

Comme on ne connaît pas ce que contient chaque procédure, c'est plutôt
difficile de savoir ... !


Cependant, tu dois faire attention à la façon dont tu nommes tes images
lors de leur création.


Excel utilise un compteur interne qu'il utilise pour incrémenter les
objets ajoutés à la feuille. À titre d'exemple, à

chaque fois que tu ajoutes une feuille, il incrémente l'indexe ... Feuil4,
Feuil5 ...., le fait de supprimer une feuille

ne change rien à cet effet de chose... sauf si tu fermes le classeur et
que tu le ré-ouvres....Excel à remis son

compteur à 1... et si certain numéro de feuille ont été supprimé, il va
les recréer ....et là, cela modifie la

numérotation des objets.

Si tu fais une boucle sur tes contrôles en utilisant l'index de tes
images...la numérotation n'étant plus la bonne ...

ta procédure va planter !

Comment arriver à faire une gestion de l'appellation de tes images... cela
dépend de ce que tu as besoin de réaliser et

comment tu le réalises.


Salutations!




"Olivier" a écrit dans le message de news:
4221dc25$0$312$

Bonjour, ce post est un peu long mais il contient les macros que j'ai
créés

afin que quelqu'un puisse les tester et me dire surtout pourquoi ça ne
marche pas : cela fait bientot 20 h que je suis dessus et que je ne
comprends plus rien.
Voilà ce qui se passe : (je suis sous excel 97)
En feuille 1 j'ai une image nomme Image1 dans laquelle j'ai inseré une
photo.
En feuille 3, j'ai 4 boutons dont voici les codes :

Private Sub CommandButton1_Click()
mise_en_place_carte_dans_feuil3 'crée 20 images nommé image1 à image20
disposés en 4 lignes et 5 colonnes
End Sub

Private Sub CommandButton2_Click()
mise_en_face_cache_carte 'met sur les 20 images image1 à image20 la photo
contenu dans la feuille 1
End Sub

Private Sub CommandButton3_Click()
suppression_carte_dans_feuil3 'supprime les 20 images
End Sub

Private Sub CommandButton4_Click() 'fait tout
suppression_carte_dans_feuil3 'avec une gestion d'erreur pour éviter le
cas

où il n'y a pas d'images en feuillle 3
mise_en_place_carte_dans_feuil3
mise_en_face_cache_carte
End Sub

Si on clique dans l'ordre Bouton1, Bouton2, Bouton3 plusieurs fois de
suite.

Cela marche comme je le veux.
Si on clique une fois sur le bouton 4, Ca marche aussi. MAIS un nouveau
clic

sur le bouton 4 provoque une erreur (avec des creations d'image21,
image22,

et les images ne sont plus dans l'ordre). Et je ne vois pas d'où cela peut
venir. Je joins ci-dessous le code du module1 et je peux même envoyer en
privé le fichier excel si quelqu'un le désire. Mon but est bien sur
d'avoir

un seul bouton, j'ai créé les boutons individuels (et les msgbox dans les
procedures) pour essayer de comprendre
d'où venait le problème, mais cela ne m'a pas avancé.
Merci pour votre aide.
Olivier

Sub mise_en_place_carte_dans_feuil3()
'rq : mettre sur le bouton la propriété TakeOnFocus à False pour ne pas
prendre le focus sinon on ne peut afficher les images
'CREATION des emplacements des cartes
Sheets("Feuil3").Select
dimx_image = 54
dimy_image = 78
espx_image = 5 'espace entre deux images
espy_image = 5
debutx_image1 = 10 ' left position de la 1ere image
debuty_image1 = 15 ' top position de la 1ere image
For i = 0 To 3
For j = 0 To 4
posx = debutx_image1 + j * (dimx_image + espx_image)
posy = debuty_image1 + i * (dimy_image + espy_image)
n = 5 * i + j + 1 'numero de l'image
MsgBox Format(n) 'juste pour voir le deroulement
Feuil3.OLEObjects.Add(ClassType:="Forms.Image.1", Link:úlse,
DisplayAsIcon:úlse, Left:=posx, Top:=posy, Width:=dimx_image,
Height:=dimy_image).Select
Next j
Next i
MsgBox "fin"
End Sub

Sub mise_en_face_cache_carte()
For i = 1 To 20
MsgBox "cache " & Format(i) 'juste pour voir le deroulement
Feuil3.OLEObjects("Image" & i).Object.Picture = Feuil1.Image1.Picture
Sheets("Feuil3").Select 'pour afficher les cartes au fur et à mesure ???
Next i
End Sub

Sub suppression_carte_dans_feuil3()
On Error Resume Next 'pour eviter une erreur si il n'y a pas d'image
For i = 1 To 20
Feuil3.Shapes("Image" & i).Delete
Next i
End Sub







Avatar
anonymousA
bonsoir,

pour eviter les problèmes d'identification incrémentée par Excel,
pourquoi ne pas nommer avec un nom à toi chacune des images. En
conséquence quand tu voudras les détruire , il te suffira de les appeler
par leur noms.

ici ws (déclarée par set ws=sheets("Feuil1")est une feuille.

for I=1 to 20
Set dp = WS.OLEObjects.Add(ClassType:="Forms.Image.1", _
Left:, Top:, Width:, Height:)
End With
dp.Name = "Imageàtoi" & I
next

il suffit ensuite d'appeler les images par le nom que tu leur a donné.
A+

Merci MichDenis
Cela m'éclaire un peu même si cela reste encore flou.
Ce que je veux faire est expliqué à l'aide des procédures (elles sont à la
fin du message. c'est vrai qu'elles sont mal placées car après ma
signature). Si tu peux m'aider un peu plus en me disant comment créer mes
images et les supprimer et les recréer en conservant les noms et l'ordre
Image1 à Image20. Ce serait sympa.
Merci

"MichDenis" a écrit dans le message de news:
OH#

Bonjour Olivier,

Comme on ne connaît pas ce que contient chaque procédure, c'est plutôt


difficile de savoir ... !

Cependant, tu dois faire attention à la façon dont tu nommes tes images


lors de leur création.

Excel utilise un compteur interne qu'il utilise pour incrémenter les


objets ajoutés à la feuille. À titre d'exemple, à

chaque fois que tu ajoutes une feuille, il incrémente l'indexe ... Feuil4,


Feuil5 ...., le fait de supprimer une feuille

ne change rien à cet effet de chose... sauf si tu fermes le classeur et


que tu le ré-ouvres....Excel à remis son

compteur à 1... et si certain numéro de feuille ont été supprimé, il va


les recréer ....et là, cela modifie la

numérotation des objets.

Si tu fais une boucle sur tes contrôles en utilisant l'index de tes


images...la numérotation n'étant plus la bonne ...

ta procédure va planter !

Comment arriver à faire une gestion de l'appellation de tes images... cela


dépend de ce que tu as besoin de réaliser et

comment tu le réalises.


Salutations!




"Olivier" a écrit dans le message de news:


4221dc25$0$312$

Bonjour, ce post est un peu long mais il contient les macros que j'ai


créés

afin que quelqu'un puisse les tester et me dire surtout pourquoi ça ne
marche pas : cela fait bientot 20 h que je suis dessus et que je ne
comprends plus rien.
Voilà ce qui se passe : (je suis sous excel 97)
En feuille 1 j'ai une image nomme Image1 dans laquelle j'ai inseré une
photo.
En feuille 3, j'ai 4 boutons dont voici les codes :

Private Sub CommandButton1_Click()
mise_en_place_carte_dans_feuil3 'crée 20 images nommé image1 à image20
disposés en 4 lignes et 5 colonnes
End Sub

Private Sub CommandButton2_Click()
mise_en_face_cache_carte 'met sur les 20 images image1 à image20 la photo
contenu dans la feuille 1
End Sub

Private Sub CommandButton3_Click()
suppression_carte_dans_feuil3 'supprime les 20 images
End Sub

Private Sub CommandButton4_Click() 'fait tout
suppression_carte_dans_feuil3 'avec une gestion d'erreur pour éviter le


cas

où il n'y a pas d'images en feuillle 3
mise_en_place_carte_dans_feuil3
mise_en_face_cache_carte
End Sub

Si on clique dans l'ordre Bouton1, Bouton2, Bouton3 plusieurs fois de


suite.

Cela marche comme je le veux.
Si on clique une fois sur le bouton 4, Ca marche aussi. MAIS un nouveau


clic

sur le bouton 4 provoque une erreur (avec des creations d'image21,


image22,

et les images ne sont plus dans l'ordre). Et je ne vois pas d'où cela peut
venir. Je joins ci-dessous le code du module1 et je peux même envoyer en
privé le fichier excel si quelqu'un le désire. Mon but est bien sur


d'avoir

un seul bouton, j'ai créé les boutons individuels (et les msgbox dans les
procedures) pour essayer de comprendre
d'où venait le problème, mais cela ne m'a pas avancé.
Merci pour votre aide.
Olivier

Sub mise_en_place_carte_dans_feuil3()
'rq : mettre sur le bouton la propriété TakeOnFocus à False pour ne pas
prendre le focus sinon on ne peut afficher les images
'CREATION des emplacements des cartes
Sheets("Feuil3").Select
dimx_image = 54
dimy_image = 78
espx_image = 5 'espace entre deux images
espy_image = 5
debutx_image1 = 10 ' left position de la 1ere image
debuty_image1 = 15 ' top position de la 1ere image
For i = 0 To 3
For j = 0 To 4
posx = debutx_image1 + j * (dimx_image + espx_image)
posy = debuty_image1 + i * (dimy_image + espy_image)
n = 5 * i + j + 1 'numero de l'image
MsgBox Format(n) 'juste pour voir le deroulement
Feuil3.OLEObjects.Add(ClassType:="Forms.Image.1", Link:úlse,
DisplayAsIcon:úlse, Left:=posx, Top:=posy, Width:=dimx_image,
Height:=dimy_image).Select
Next j
Next i
MsgBox "fin"
End Sub

Sub mise_en_face_cache_carte()
For i = 1 To 20
MsgBox "cache " & Format(i) 'juste pour voir le deroulement
Feuil3.OLEObjects("Image" & i).Object.Picture = Feuil1.Image1.Picture
Sheets("Feuil3").Select 'pour afficher les cartes au fur et à mesure ???
Next i
End Sub

Sub suppression_carte_dans_feuil3()
On Error Resume Next 'pour eviter une erreur si il n'y a pas d'image
For i = 1 To 20
Feuil3.Shapes("Image" & i).Delete
Next i
End Sub