XL 2016 22 Actions en fonction de la valeur de 17 variables

Phillip

XLDnaute Occasionnel
Bonjour,

Je me torture toujours l'esprit.... ūüė≠

J'ai une macro qui calcule 17 variable. Les valeurs de chacune de ces variables peut prendre les valeur 1 à 22 uniquement, en fonction d'une entrée dans mon tableau excel origine...par exemple, un coup la variable 1 peut valoir 2, et lorsque je fais retourner la macro avec une entrée de tableau différente elle peut prendra la valeur 17 puis le prochain coup 15...De même pour la variable 2, 3....jusqu'à 17...
VB:
'les postes (mes variables)peuvent prendre la valeur 1 a 22. Ici, j'en ai FIXE la valeur pour des raisons de tests, mais évidemment la valeur n'est jamais fixe

poste1 = 5
poste2 = 2
poste3 = 19
poste4 = 17
poste5 = 16
poste6 = 13
poste7 = 13
poste8 = 14
poste9 = 10
poste10 = 22
poste11 = 11
poste12 = 2
poste13 = 13
poste14 = 20
poste15 = 10
poste16 = 20
poste17 = 1
Je voudrais, pour chacune des variables, en fonction de sa valeur, faire une action. (en l’occurrence, insérer une image (j'en ai 22 donc) qui vient de mon répertoire

Par exemple,
Si poste1=22, j'insère l'image 22 à la position que j'ai choisie pour le poste1,
Si poste1=8, j'insère l'image 8 à la position que j'ai choisie pour le poste1 etc. ...
(Avec la valeur de la variable poste1 plus haut j'insèrerai l'image 5 à la position que j'ai choisie pour le poste1)

Si poste2 = 3, j'insère l'image 3 à à la position que j'ai choisie pour le poste2,
Si poste2=17, j'insère l'image 17 à la position que j'ai choisie pour le poste2 etc. ...
.......
Si poste17=7, j'insère l'image 7 à à la position que j'ai choisie pour le poste17, si poste17=17, j'insère l'image 18 à la position que j'ai choisie pour le poste17 etc. ...

Il faut donc que je scanne mes 17 variables, et que je trouve leur valeur parmi 22 puis faire mon action...

Je suis perdu dans mes boucles, array et dicos....

Quelqu'un peut m'aider ?

merci

Cordialement

Phillip
 

Dudu2

XLDnaute Accro
Bonjour
si poste17=17, j'insère l'image 18 à la position que j'ai choisie pour le poste17
?
Je ne vois pas trop le problème et je ne se sais pas si ça répond à ta question.
VB:
Sub a()
    Dim TabPostes(1 To 17) As Integer
    Dim NoPoste As Integer
    
    'Exemple de valorisation
    NoPoste = 5
    TabPostes(NoPoste) = ActiveSheet.[B12]
    
    'Utilisation
    For NoPoste = 1 To UBound(TabPostes)
        Call ChargerImage(NoPoste, TabPostes(NoPoste))
    Next NoPoste
End Sub

Sub ChargerImage(PostePosition As Integer, NoImage As Integer)
    .../...
End Sub
 
Dernière édition:

Robert

XLDnaute Barbatruc
Bonjour Philip, bonjour le forum,

Sans le vrai code impossible de t'aider. L'exemple que tu donnes ne sert absolument à rien...
Comment sont calculées les variables ? Pourquoi pas un tableau pour tes 17 variables ?

[√Čdition]
Bonjour Dudu, nos posts ses sont croisés...
 

Phillip

XLDnaute Occasionnel
Bonjour Robert et Dudu2,

@Dudu2, ça ne répond pas à mon besoin, en tous cas, je ne sais pas le faire marcher...

@ Robert : Si j'avais le vrai code, je n'aurais pas besoin de poser la question :)...Mais je vais tenter quelque chose...
VB:
Sub cartes()

'Je calcule les postes : les valeurs de ces postes (1,4,5,6...) me permettront d'insérer les fichiers .jpg voiture1, le voiture4, le voiture5
'J'ai dans cet exemple 6 POSTES, mais qui peuvent prendre 12 VALEURS qui sont les "indices" de fichiers .jpg : voiture1, voiture2, voiture3, voiture4, voiture5, voiture6, jusqu'à voiture12
poste1 = 1
poste3 = 4
poste4 = 5
poste5 = 6
poste6 = poste4 + poste5
poste2 = poste1 + poste6

Debug.Print poste1
Debug.Print poste2
Debug.Print poste3
Debug.Print poste4
Debug.Print poste5
Debug.Print poste6

'Ici, je définis le chemin du fichier .jpg
Tablo_fichiers = Array(poste1, poste2, poste3, poste4, poste5, poste6)
    For Each i In Tablo_fichiers
    chemin = "C:\Users\Phillip\Desktop\voiture" & i & ".jpg"
 Debug.Print chemin


next i

'une fois que j'ai mon chemin pour chaque fichier en fonction de i, je voudrais
'que dans ma feuille, ou j'ai défini des endroits j'insère mes fichiers jpg voiture...

Mais je ne sais pas comment faire la relation entre la VALEUR de poste1 et son nom de variable qui me permet d'insérer le bon fichier à l'endroit du poste1..etc...
'place du fichier correspondant au poste1 (qui est le fichier voiture1.jpg=>1=valeur de poste1)
ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=2, Top:=988, Width:=100, Height:=140

place du fichier correspondant au poste2  (qui est le fichier voiture12.jpg=>12= valeur de poste1+poste4+poste5)
ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=20, Top:=1988, Width:=100, Height:=140

etc...

'place du fichier correspondant au poste6 (qui est le fichier voiture11.jpg=>11= valeur de poste4+poste5))
ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=42, Top:=2000, Width:=100, Height:=140

   
    Next i

'les places dédiées au images poste ne changent jamais : l'image du poste"x" sera toujours au même endroit
'MAIS ça ne sera pas toujours la même image puisque la valeur de poste"x" pourra changer...

'Il faut donc que je regarde la valeur de chaque poste pour trouver le nom complet de mon fichier jpg (et donc mon chemin),
'PUIS insérer ce fichier à l'endroit défini pour le poste étudié...


End Sub
Merci de votre aide

Cordialement

Phillip
 
Dernière édition:

Phillip

XLDnaute Occasionnel
Je crois que j'ai trouvé avec des if

VB:
Sub cartes()

'Je calcule les postes : les valeurs de ces postes (1,4,5,6...) me permettront d'insérer les fichiers .jpg voiture1, le voiture4, le voiture5
'J'ai dans cet exemple 6 POSTES, mais qui peuvent prendre 12 VALEURS qui sont les "indices" de fichiers .jpg : voiture1, voiture2, voiture3, voiture4, voiture5, voiture6, jusqu'à voiture12
poste1 = 1
poste3 = 4
poste4 = 5
poste5 = 6
poste6 = poste4 + poste5
poste2 = poste1 + poste6

Debug.Print poste1
Debug.Print poste2
Debug.Print poste3
Debug.Print poste4
Debug.Print poste5
Debug.Print poste6

'Ici, je définis le chemin du fichier .jpg
'chemin = "C:\Users\Phillip\Desktop\voiture" & "valeur de la variable poste1" & ".jpg"

'Je ne sais pas quoi mettre dans ce tableau
Tablo_fichiers = Array(poste1, poste2, poste3, poste4, poste5, poste6)
    For Each i In Tablo_fichiers
    chemin = "C:\Users\JTMQ6376\Desktop\voiture" & i & ".jpg"
    Debug.Print chemin
    Debug.Print i
    'place du fichier correspondant au poste1
    If i = 1 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=2, Top:=2, Width:=100, Height:=140
    
    ElseIf i = 12 Then
    'place du fichier correspondant au poste2
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=50, Top:=2, Width:=100, Height:=140
    
    ElseIf i = 4 Then 'place du fichier correspondant au poste3
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=100, Top:=2, Width:=100, Height:=140
    
    ElseIf i = 5 Then 'place du fichier correspondant au poste4
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=200, Top:=2, Width:=100, Height:=140
    
    ElseIf i = 6 Then 'place du fichier correspondant au poste5
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=200, Top:=2, Width:=100, Height:=140
    
    ElseIf i = 11 Then 'place du fichier correspondant au poste6
ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=400, Top:=2, Width:=100, Height:=140
    
    End If
    Next i

'Dans ma feuille, j'ai d√©fini des endroits o√Ļ je veux ins√©rer mes fichiers jpg voiture...
 



'
'les places dédiées au images poste ne changent jamais : l'image du poste1 sera toujours au même endroit
'MAIS ça ne sera pas toujours la même image puisque la valeur de poste1 pourra changer...

'Il faut donc que je regarde la valeur de chaque poste pour trouver le nom complet de mon fichier jpg (et donc mon chemin),
'PUIS insérer ce fichier à l'endroit défini pour le poste étudié...


End Sub
Qu'en pensez-vous ? Puis-je optimiser mes "if" (dans la réalité j'en ai 22...

merci

Cordialement

Phillip
 

vgendron

XLDnaute Barbatruc
Hello
Plutot qu'un If répétitif, je pencherais plutot pour un select case
VB:
Select case i 'selon la valeur de i, tu définis les paramètres de position
    Case 1
     gauche=2, haut=2, largeur=100, hauteur=140
  case 2
     gauche=50, haut=2, largeur=100, hauteur=140

...
end select
'tu ajouttes ton image
ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=gauche, Top:=haut, Width:=largeur, Height:=hauteur
 

Robert

XLDnaute Barbatruc
Bonjour le fil, bonjour le forum,

Le problème avec Philip c'est qu'il s'écoute parler mais ne tiens pas compte de ce qu'on peut lui dire... Bonne journée à vous. Je vous laisse avec lui...
 

laurent950

XLDnaute Accro
Bonjour le fil, bonjour le forum,
VB:
Sub Test()
poste1 = 1
poste3 = 4
poste4 = 5
poste5 = 6
poste6 = poste4 + poste5
poste2 = poste1 + poste6

Tablo_fichiers = Array(poste1, poste2, poste3, poste4, poste5, poste6)

    For i = LBound(Tablo_fichiers) To UBound(Tablo_fichiers)
    chemin = "C:\Users\JTMQ6376\Desktop\voiture" & Tablo_fichiers(i) & ".jpg"
    Debug.Print chemin
    Debug.Print i & " (pour i) " & " = Poste " & Tablo_fichiers(i)
    'place du fichier correspondant au poste1
    If Tablo_fichiers(i) = 1 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=2, Top:=2, Width:=100, Height:=140
   
    ElseIf Tablo_fichiers(i) = 12 Then
    'place du fichier correspondant au poste2
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=50, Top:=2, Width:=100, Height:=140
   
    ElseIf Tablo_fichiers(i) = 4 Then 'place du fichier correspondant au poste3
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=100, Top:=2, Width:=100, Height:=140
   
    ElseIf Tablo_fichiers(i) = 5 Then 'place du fichier correspondant au poste4
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=200, Top:=2, Width:=100, Height:=140
   
    ElseIf Tablo_fichiers(i) = 6 Then 'place du fichier correspondant au poste5
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=200, Top:=2, Width:=100, Height:=140
   
    ElseIf Tablo_fichiers(i) = 11 Then 'place du fichier correspondant au poste6
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=400, Top:=2, Width:=100, Height:=140
   
    End If
    Next i
End Sub
 

Phillip

XLDnaute Occasionnel
Merci Robert de ce jugement sans me conna√ģtre...Je ne COMPRENDS pas ce que je dois faire et ne comprends pas ce que vous me dites. Je suis correct, poli, pose des questions, d√©sol√© de ne pas √™tre aussi fort et clair que toi. J'adorerai avoir vos connaissances et aider les autres sur le forum. C'est vrai que je suis souvent demandeur, et pas toujours clair sans doute....Mais je ne demande qu'√† m'am√©liorer...
 

vgendron

XLDnaute Barbatruc
pour faire simple et clair et efficace: Poste TON fichier sur lequel tu travailles
s'il y a des infos confidentielles, remplaces les par des titi tata tutu...
 

Phillip

XLDnaute Occasionnel
Bonjour vgendron... C'est ce que je m'apprête à faire...

Le fichier excel n'est qu'une représentation spatiale de ce que je veux....

Module insimage....
J'efface d'abord toutes les images...
Mon code ne fonctionne pas comme je le voudrais, c'est ce bout là

VB:
Sub InsereImage()
Dim chemin As String
Dim nomfichier As String
Dim item As Variant

Dim Img As Object
'
For Each Img In ActiveSheet.Pictures
Img.Delete
Next
 
'test avec valeurs de postes bidon
'J'ai 22 arcanes, mais toutes ne sont pas forcément utilisées, d'autres peuvent être en double
poste1 = 5
poste2 = 2
poste3 = 19
poste4 = 17
poste5 = 16
poste6 = 13
poste7 = 13
poste8 = 14
poste9 = 10
poste10 = 22
poste11 = 11
poste12 = 2
poste13 = 13
poste14 = 20
poste15 = 10
poste16 = 20
poste17 = 1

'
    Tablo_fichiers = Array(poste1, poste2, poste3, poste4, poste5, poste6, poste7, poste8, poste9, poste10, poste11, poste12, poste13, poste14, poste15, poste16, poste17)
    For Each i In Tablo_fichiers
    chemin = "C:\Users\JTMQ6376\Desktop\testetoile\arcane" & i & ".jpg"
    Debug.Print chemin
    Debug.Print i
    'place du fichier correspondant au poste1
    'place du poste1
    
    If i = 1 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=167, Top:=1269, Width:=100, Height:=140
    

    'place du poste2
    ElseIf i = 2 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=2, Top:=988, Width:=100, Height:=140
    ElseIf i = 3 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=385, Top:=1417, Width:=100, Height:=140
    ElseIf i = 4 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=0, Top:=460, Width:=100, Height:=140
    ElseIf i = 5 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=665, Top:=1263, Width:=100, Height:=140
    ElseIf i = 6 Then
    ActiveSheet.Shapes.AddPicture Filenam


CAR : En fait il met le fichier arcane"x" à la position du poste"x"

ALORS qu'en l'occurence, comme poste1=5, il faudrait que j'ai le arcane à la position de poste1 (Left:=167, Top:=1269), le arcane2 à la position poste2 ( Left:=2, Top:=988), le arcane19 à la position du poste3 (...), etc...

Je me perds dans mes if et dans mes indices i

Merci encore

Cordialement
 

Fichiers joints

Phillip

XLDnaute Occasionnel
A noter que le code de Laurent950 ne fonctionne pas...Distribution des cartes al√©atoires, postes absents...Comment fait-on pour g√©rer le premier indice "0"¬į

merci

Cordialement
 

vgendron

XLDnaute Barbatruc
ce code fonctionne chez moi
VB:
Sub InsereImage()
Dim chemin As String
Dim nomfichier As String
Dim item As Variant

Dim Img As Object
'
For Each Img In ActiveSheet.Pictures
Img.Delete
Next
 
'test avec valeurs de postes bidon
'J'ai 22 arcanes, mais toutes ne sont pas forcément utilisées, d'autres peuvent être en double
poste1 = 5
poste2 = 2
poste3 = 19
poste4 = 17
poste5 = 16
poste6 = 13
poste7 = 13
poste8 = 14
poste9 = 10
poste10 = 22
poste11 = 11
poste12 = 2
poste13 = 13
poste14 = 20
poste15 = 10
poste16 = 20
poste17 = 1

Tablo_fichiers = Array(poste1, poste2, poste3, poste4, poste5, poste6, poste7, poste8, poste9, poste10, poste11, poste12, poste13, poste14, poste15, poste16, poste17)
For Each i In Tablo_fichiers
    chemin = "C:\Users\JTMQ6376\Desktop\testetoile\arcane" & i & ".jpg"
    'Debug.Print chemin
    Largeur = 100: Hauteur = 140
    Select Case i
        Case 1
            Gauche = 167: Haut = 1269
        Case 2
            Gauche = 2: Haut = 988
        Case 3
            Gauche = 385: Haut = 1417
        Case 4
            Gauche = 0: Haut = 460
        Case Else
            MsgBox "positions non définies"
            GoTo suivant
    End Select
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=Gauche, Top:=Haut, Width:=Largeur, Height:=Hauteur
suivant:
Next i

End Sub
1) je te laisse compléter le case 5 6 7.....
2) il faut que les images "arcane1.jpg arcane2.jpg... existent bien dans le répertoire que tu as défini
 

eriiiic

XLDnaute Barbatruc
Bonjour,

Merci Robert de ce jugement sans me conna√ģtre..
Sans te connaitre je suis 100% d'accord avec Robert.
Ca fait une semaine que tout le monde te dit de ne pas utiliser des noms de variables indicés mais des tableaux qui te simplifieraient considérablement le code, mais tu t'obstines dans l'erreur...
eric
 

Phillip

XLDnaute Occasionnel
Pouvez vous faire un copier coller de mon code qui fonctionne pas, je vais regarder
Le code fonctionne, (pas d'erreurs), mais il ne met pas un fichier sur chaque poste, et pour le poste1 il met le fichier 1, le poste2, fichier 2, alors que pour le poste1 il devrait mettre le fichier 5, pour le poste2, le fichier 2, le poste 3 le fichier 19....

VB:
poste1 = 5
poste2 = 2
poste3 = 19
poste4 = 17
poste5 = 16
poste6 = 13
poste7 = 13
poste8 = 14
poste9 = 10
poste10 = 22
poste11 = 11
poste12 = 2
poste13 = 13
poste14 = 20
poste15 = 10
poste16 = 20
poste17 = 1
Code entier
Code:
Sub InsereImage()
Dim chemin As String
Dim nomfichier As String
Dim item As Variant

Dim Img As Object
'
For Each Img In ActiveSheet.Pictures
Img.Delete
Next
 
'test avec valeurs de postes bidon
'J'ai 22 arcanes, mais toutes ne sont pas forcément utilisées, d'autres peuvent être en double
poste1 = 5
poste2 = 2
poste3 = 19
poste4 = 17
poste5 = 16
poste6 = 13
poste7 = 13
poste8 = 14
poste9 = 10
poste10 = 22
poste11 = 11
poste12 = 2
poste13 = 13
poste14 = 20
poste15 = 10
poste16 = 20
poste17 = 1

'
    Tablo_fichiers = Array(poste0, poste1, poste2, poste3, poste4, poste5, poste6, poste7, poste8, poste9, poste10, poste11, poste12, poste13, poste14, poste15, poste16, poste17)
    For i = LBound(Tablo_fichiers) To UBound(Tablo_fichiers)
    chemin = "C:\Users\JTMQ6376\Desktop\testetoile\arcane" & Tablo_fichiers(i) & ".jpg"
    Debug.Print chemin
    Debug.Print i & " (pour i) " & " = Poste " & Tablo_fichiers(i)
    'place du fichier correspondant au poste1
    'place du fichier correspondant au poste1
          

    'place du poste1
    
    If Tablo_fichiers(i) = 1 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=167, Top:=1269, Width:=100, Height:=140
    

    'place du poste2
    ElseIf Tablo_fichiers(i) = 2 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=2, Top:=988, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 3 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=385, Top:=1417, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 4 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=0, Top:=460, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 5 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=665, Top:=1263, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 6 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=842, Top:=985, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 7 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=838, Top:=462, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 8 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=665, Top:=268, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 9 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=166, Top:=266, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 10 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=1138, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 11 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=1001, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 12 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=860, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 13 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=719, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 14 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=575, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 15 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=429, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 16 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=285, Width:=100, Height:=140
    ElseIf Tablo_fichiers(i) = 17 Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=385, Top:=4, Width:=100, Height:=140
    End If
Next i


End Sub

copie de la fenêtre de debug

C:\Users\JTMQ6376\Desktop\testetoile\arcane.jpg
0 (pour i)  = Poste 
C:\Users\JTMQ6376\Desktop\testetoile\arcane5.jpg
1 (pour i)  = Poste 5
C:\Users\JTMQ6376\Desktop\testetoile\arcane2.jpg
2 (pour i)  = Poste 2
C:\Users\JTMQ6376\Desktop\testetoile\arcane19.jpg
3 (pour i)  = Poste 19
C:\Users\JTMQ6376\Desktop\testetoile\arcane17.jpg
4 (pour i)  = Poste 17
C:\Users\JTMQ6376\Desktop\testetoile\arcane16.jpg
5 (pour i)  = Poste 16
C:\Users\JTMQ6376\Desktop\testetoile\arcane13.jpg
6 (pour i)  = Poste 13
C:\Users\JTMQ6376\Desktop\testetoile\arcane13.jpg
7 (pour i)  = Poste 13
C:\Users\JTMQ6376\Desktop\testetoile\arcane14.jpg
8 (pour i)  = Poste 14
C:\Users\JTMQ6376\Desktop\testetoile\arcane10.jpg
9 (pour i)  = Poste 10
C:\Users\JTMQ6376\Desktop\testetoile\arcane22.jpg
10 (pour i)  = Poste 22
C:\Users\JTMQ6376\Desktop\testetoile\arcane11.jpg
11 (pour i)  = Poste 11
C:\Users\JTMQ6376\Desktop\testetoile\arcane2.jpg
12 (pour i)  = Poste 2
C:\Users\JTMQ6376\Desktop\testetoile\arcane13.jpg
13 (pour i)  = Poste 13
C:\Users\JTMQ6376\Desktop\testetoile\arcane20.jpg
14 (pour i)  = Poste 20
C:\Users\JTMQ6376\Desktop\testetoile\arcane10.jpg
15 (pour i)  = Poste 10
C:\Users\JTMQ6376\Desktop\testetoile\arcane20.jpg
16 (pour i)  = Poste 20
C:\Users\JTMQ6376\Desktop\testetoile\arcane1.jpg
17 (pour i)  = Poste 1
 

Phillip

XLDnaute Occasionnel
Bonjour,


Sans te connaitre je suis 100% d'accord avec Robert.
Ca fait une semaine que tout le monde te dit de ne pas utiliser des noms de variables indicés mais des tableaux qui te simplifieraient considérablement le code, mais tu t'obstines dans l'erreur...
eric
On ne va pas polémiquer 107 ans...Je vous parais m'obstiner dans l'erreur, peut-être...J'essaye de comprendre ce que vous me dites...
 

Phillip

XLDnaute Occasionnel
C'est moi qui ai rajouté ce poste0..Mais ça ne change rien (ou pas grand chose)...pas de fichier partour et surtout mauvaise correspondance entre les postes et les noms de fichiers...poste1 doit afficher le ficher arcane5... Capture.PNG

PS : résultat après suppression poste0...:-(
 

laurent950

XLDnaute Accro
re,
VB:
Sub InsereImage()
Dim chemin As String
Dim nomfichier As String
Dim item As Variant

Dim Img As Object
'
For Each Img In ActiveSheet.Pictures
Img.Delete
Next

Dim Tablo_fichiers() As Variant
    ReDim Tablo_fichiers(1 To 2, 1 To 17)

poste3 = 5: Tablo_fichiers(1, 1) = "poste1": Tablo_fichiers(2, 1) = poste1
poste2 = 2: Tablo_fichiers(1, 2) = "poste2": Tablo_fichiers(2, 2) = poste2
poste3 = 19: Tablo_fichiers(1, 3) = "poste3": Tablo_fichiers(2, 3) = poste3
poste4 = 17: Tablo_fichiers(1, 4) = "poste4": Tablo_fichiers(2, 4) = poste4
poste5 = 16: Tablo_fichiers(1, 5) = "poste5": Tablo_fichiers(2, 5) = poste5
poste6 = 13: Tablo_fichiers(1, 6) = "poste6": Tablo_fichiers(2, 6) = poste6
poste7 = 13: Tablo_fichiers(1, 7) = "poste7": Tablo_fichiers(2, 7) = poste7
poste8 = 14: Tablo_fichiers(1, 8) = "poste8": Tablo_fichiers(2, 8) = poste8
poste9 = 10: Tablo_fichiers(1, 9) = "poste9": Tablo_fichiers(2, 9) = poste9
poste10 = 22: Tablo_fichiers(1, 10) = "poste10": Tablo_fichiers(2, 10) = poste10
poste11 = 11: Tablo_fichiers(1, 11) = "poste11": Tablo_fichiers(2, 11) = poste11
poste12 = 2: Tablo_fichiers(1, 12) = "poste12": Tablo_fichiers(2, 12) = poste12
poste13 = 13: Tablo_fichiers(1, 13) = "poste13": Tablo_fichiers(2, 13) = poste13
poste14 = 20: Tablo_fichiers(1, 14) = "poste14": Tablo_fichiers(2, 14) = poste14
poste15 = 10: Tablo_fichiers(1, 15) = "poste15": Tablo_fichiers(2, 15) = poste15
poste16 = 20: Tablo_fichiers(1, 16) = "poste16": Tablo_fichiers(2, 16) = poste16
poste17 = 1: Tablo_fichiers(1, 17) = "poste17": Tablo_fichiers(2, 17) = poste17

    For i = LBound(Tablo_fichiers, 2) To UBound(Tablo_fichiers, 2)
    chemin = "C:\Users\JTMQ6376\Desktop\testetoile\arcane" & Tablo_fichiers(2, i) & ".jpg"
    Debug.Print chemin
    Debug.Print i & " (pour i) " & " = Poste " & Tablo_fichiers(1, i)
    'place du fichier correspondant au poste1
    'place du fichier correspondant au poste1
    'place du poste1
    If Tablo_fichiers(1, i) = "poste1" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=167, Top:=1269, Width:=100, Height:=140
    'place du poste2
    ElseIf Tablo_fichiers(1, i) = "poste2" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=2, Top:=988, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste3" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=385, Top:=1417, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste4" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=0, Top:=460, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste5" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=665, Top:=1263, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste6" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=842, Top:=985, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste7" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=838, Top:=462, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste8" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=665, Top:=268, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste9" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=166, Top:=266, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste10" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=1138, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste11" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=1001, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste12" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=860, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste13" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=719, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste14" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=575, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste15" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=429, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste16" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=467, Top:=285, Width:=100, Height:=140
    ElseIf Tablo_fichiers(1, i) = "poste17" Then
    ActiveSheet.Shapes.AddPicture Filename:=chemin, linktofile:=msoFalse, savewithdocument:=msoTrue, Left:=385, Top:=4, Width:=100, Height:=140
    End If
Next i
End Sub
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas