[déplacé VB.NET -> VBA] indiquer le chemin à plusieurs image sur une feuil à par [Résolu]

Signaler
Messages postés
2
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
19 février 2010
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous

Je travaille avec VBA 6.3
J'ai un soucis pour indiquer le chemin d'accès de 20 Images.
Pour des raisons plus compliqué je ne peut pas faire:

feuil5.Image1.picture.....
feuil5.Image2.picture.....
....
feuil5.Image20.picture.....

Donc j'ai essayé plusieurs code avec l'instruction Me ou Controls, ca marche qd on fait référence à des images de la userform mais une une "worksheets" il ne trouve pas l'objet. j' ai essayé
Dim L as integer
L = 1
me.("feuil5.Image" & L).picture.....
Ou d'autre compilation dans le même genre

Si quelqu'un aurai une solution c'est serai super
Merci d'avance

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Bonjour,
1) (et surtout) : tu ne développes pas sous VB.Net (le présent thème), mais, comme tu le dis toi-même, sous VBA/Excel. Le choix du thème adéquat n'est ni un divertissement, ni une option ... Il est une réelle nécessité. Veille à y prêter attention dorénavant. Merci.

2) le propre des collections, est qu'elles permettent de se référer à un de leur membre soit en indiquant un index ( ex : macollection(2) pour se référer au membre d'uindex 2 de macollection), soit en indiquant le nom du membre (ex: macollection("toto") pour se référer au membre nommé "toto" de macollection.
Vu ?
Bon... Alors :
Worksheets est une collection (celles des feuilles)
Controls est une collection (celle des contrôles posés sur un UserForm)
Shapes est une collection (celle des formes posées sur une feuille de calcul)

A toi de jouer (tu devrais avoir capté et être à même d'écrire ton code, maintenant).



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
2
Date d'inscription
jeudi 18 février 2010
Statut
Membre
Dernière intervention
19 février 2010

Bonsoir
Merci pour l'info je ferai attention la prochaine fois.

Mais je ne peut pas attribuer d'index à mes images, je n'ai pas cette propriété !!
Tes 20 images ont le même nom avec un numéro d'index différent allant de 1 à 20 et tu fait appel en faisant Image(2), je connait.

Mais sans cette propriété mes images s'appelle Image1, Image2, Image3,etc...

Voici mon code simplifié

Private Sub CommandButton1_Click()
L = 1
While L <> 21
Feuil5.Image(L).Picture = LoadPicture("C:\Program Files\Suivis SAV 3.0\Image" & L & ".bmp")
L = L + 1
Wend
End Sub

Ce code est sur UserForm1 et les image sur une feuille

Vu comme çà, çà ne fonctionne pas! c'est fait pour éviter d'avoir :
Feuil5.Image1.Picture = LoadPicture("C:\Program...
Feuil5.Image2.Picture = LoadPicture("C:\Program...

Désolé si je prend pas les thermes exact, je ne demande qu'à apprendre
Merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Tu ne "demandes qu'à apprendre", mais ne lis pas !
Je t'ai pourtant exposé ce qu'étaient les collections, non ?
Tiens, par exemple, (si tes images sont sur un userform,... autre collection si sur feuille...) :


Me.Controls("Image" & 3) se réfère à l'image Image3 de ton UserForm

Je t'ai également parlé d'autres collections, non (WorkSheets et Shapes) ==>> C'est exactement le même principe ..

Tes contrôles n'ont pas d'index propre ! Ils sont par contre inclus dans une collection au sein de laquelle ils possèdent un index et un nom. C'est le principe de toute collection. Dans l'exemple ci-dessus, on n'utilise même pas leur index dans la collection, mais directement leur nom dans la collection Controls.
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est