Chargement d'images (VBA)

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #19073971
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" 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


Romain
Le #19075751
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" 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






Publicité
Poster une réponse
Anonyme