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

Chargement d'images (VBA)

2 réponses
Avatar
Romain
Bonsoir tout le monde,

j'essaye de faire un code me permettant de charger des photos ( 10 20 30
40 peu importe) dans des images.picure ( rebaptisés photo1.picture ,
photo2.picture etc...)

je veux que la photo 1 soit dans le photo1picture etc...

j'ai essayé avec le code suivant , j'ai créer une fonction charger(i)
et puis je l'appelle quand je clique sur un bouton ....

et là c'est le drame... ça ne fonctionne pas.....

je précise que j'ai débuté hier en VBA,

Si vous pouviez m'aider avec une bonne explication svp ....


Merci
> ------------------------------------
> function charger(i As Byte)
>
> Controls("photo" & i).Picture = LoadPicture(ThisWorkbook.Path & "\images\" & i & ".gif")
>
> End function
>
> ---------------------------------
>
> Private Sub CommandButton10_Click()
>
> for a = 1 to 100
>
> Call charger(a)
>
> next
>
> End Sub

2 réponses

Avatar
MichDenis
Bonjour Romain,

Je te propose un exemple, et pour ce faire j'ai fait quelques suppositions :

A ) que tu as des contrôles "Image" dans ta feuille de calcul qui proviennent
de la barre d'outils "Contrôles"

B ) Que dans ton répertoire, tu as suffisamment d'images pour en afficher
une par contrôle.

'-----------------------------------------------
Sub test()

Dim Pc As Object
Dim Chemin As String
Dim NbControl As Integer
Dim X As Integer

'Indique où sont tes images
Chemin = "C:UsersDMDocuments"
'S'ils sont dans le même répertoire que ton fichier excel
Chemin = ThisWorkbook.Path & ""

'Cette section cherche à compter le nombre de contrôle "Image"
'que tu as parmi toutes les "shapes" de la Feuil2
'Feuil2 n'est pas le nom de l'onglet de la feuille mais la propriété
'Name de l'objet Feuille visible dans l'éditeur de code

For Each Sh In Feuil2.OLEObjects
If TypeName(Sh.Object) = "Image" Then
NbControl = NbControl + 1
End If
Next

'Identifier la première image de ton répertoire
'à toi de définir l'extension de tes fichiers images
Fichier = Dir(Chemin & "*.jpeg")

'Boucle jusqu'au moment où tous les contrôles images
'auront eu leur image
Do While X <= NbControl
For Each Sh In Feuil2.OLEObjects
If TypeName(Sh.Object) = "Image" Then
'Chargement de l'image dans le contrôle
Sh.Object.Picture = LoadPicture(Chemin & Fichier)
'Chargement dans la variable "Fichier" le nom
'du fichier image suivant
Fichier = Dir()
' mise à jour du compteur
X = X + 1
End If
Next
Loop

End Sub
'-----------------------------------------------




"Romain" a écrit dans le message de groupe de
discussion : #
Bonsoir tout le monde,

j'essaye de faire un code me permettant de charger des photos ( 10 20 30
40 peu importe) dans des images.picure ( rebaptisés photo1.picture ,
photo2.picture etc...)

je veux que la photo 1 soit dans le photo1picture etc...

j'ai essayé avec le code suivant , j'ai créer une fonction charger(i)
et puis je l'appelle quand je clique sur un bouton ....

et là c'est le drame... ça ne fonctionne pas.....

je précise que j'ai débuté hier en VBA,

Si vous pouviez m'aider avec une bonne explication svp ....


Merci
------------------------------------
function charger(i As Byte)

Controls("photo" & i).Picture = LoadPicture(ThisWorkbook.Path & "images" & i & ".gif")

End function

---------------------------------

Private Sub CommandButton10_Click()

for a = 1 to 100

Call charger(a)

next

End Sub


Avatar
Romain
bonjour Denis,

Si j'ai bien compris cela marche quelque soit le nombre de shape picture
et si il y a suffisamment de photos?

Je vais tester tout ça , mais en fait je pense que le nombre de shape
sera une valeur connu..

Merci





MichDenis a écrit :
Bonjour Romain,

Je te propose un exemple, et pour ce faire j'ai fait quelques suppositions :

A ) que tu as des contrôles "Image" dans ta feuille de calcul qui proviennent
de la barre d'outils "Contrôles"

B ) Que dans ton répertoire, tu as suffisamment d'images pour en afficher
une par contrôle.

'-----------------------------------------------
Sub test()

Dim Pc As Object
Dim Chemin As String
Dim NbControl As Integer
Dim X As Integer

'Indique où sont tes images
Chemin = "C:UsersDMDocuments"
'S'ils sont dans le même répertoire que ton fichier excel
Chemin = ThisWorkbook.Path & ""

'Cette section cherche à compter le nombre de contrôle "Image"
'que tu as parmi toutes les "shapes" de la Feuil2
'Feuil2 n'est pas le nom de l'onglet de la feuille mais la propriété
'Name de l'objet Feuille visible dans l'éditeur de code

For Each Sh In Feuil2.OLEObjects
If TypeName(Sh.Object) = "Image" Then
NbControl = NbControl + 1
End If
Next

'Identifier la première image de ton répertoire
'à toi de définir l'extension de tes fichiers images
Fichier = Dir(Chemin & "*.jpeg")

'Boucle jusqu'au moment où tous les contrôles images
'auront eu leur image
Do While X <= NbControl
For Each Sh In Feuil2.OLEObjects
If TypeName(Sh.Object) = "Image" Then
'Chargement de l'image dans le contrôle
Sh.Object.Picture = LoadPicture(Chemin & Fichier)
'Chargement dans la variable "Fichier" le nom
'du fichier image suivant
Fichier = Dir()
' mise à jour du compteur
X = X + 1
End If
Next
Loop

End Sub
'-----------------------------------------------




"Romain" a écrit dans le message de groupe de
discussion : #
Bonsoir tout le monde,

j'essaye de faire un code me permettant de charger des photos ( 10 20 30
40 peu importe) dans des images.picure ( rebaptisés photo1.picture ,
photo2.picture etc...)

je veux que la photo 1 soit dans le photo1picture etc...

j'ai essayé avec le code suivant , j'ai créer une fonction charger(i)
et puis je l'appelle quand je clique sur un bouton ....

et là c'est le drame... ça ne fonctionne pas.....

je précise que j'ai débuté hier en VBA,

Si vous pouviez m'aider avec une bonne explication svp ....


Merci
------------------------------------
function charger(i As Byte)

Controls("photo" & i).Picture = LoadPicture(ThisWorkbook.Path & "images" & i & ".gif")

End function

---------------------------------

Private Sub CommandButton10_Click()

for a = 1 to 100

Call charger(a)

next

End Sub