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
 

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
 

soan

XLDnaute Barbatruc
Inactif
Bonjour @Phillip, le fil,

dans le fichier joint, je te propose une solution sans test If ni Select Case. ;)

fais Alt F11 pour voir le code VBA ; puis Alt F11 pour revenir sur Excel.

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. :)


soan
 

Pièces jointes

  • testtab.xlsm
    750.7 KB · Affichages: 6

Phillip

XLDnaute Occasionnel
Bonjour @Phillip, le fil,

dans le fichier joint, je te propose une solution sans test If ni Select Case. ;)

fais Alt F11 pour voir le code VBA ; puis Alt F11 pour revenir sur Excel.

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis. :)


soan
Bonjour Soan,

Merci pour ce code très.."propre" et qui fonctionne, mais...
1) Ca me remplit correctement et comme attendu mon onglet avec mes images (toutes !), mais ça plante à la dernière occurence (il dit qu'il ne trouve pas le fichier spécifié)
2) pour l'array po = Array(5, 2, 19, 17, 16, 13, 13, 14, 10, 22, 11, 2, 13, 20, 10, 20, 1, 0, 0, 0, 0, 0)
les valeurs 5,2...sont des exemples...Cela signifie-t'il que si je mets
po=array(poste1, poste2, poste3,...Poste17, 0,0,0,0,0) car mes poste"x" de cet array sont des variables et non des constantes, cela fonctionnera pareil ?

En tous cas merci, super boulot !
 

Phillip

XLDnaute Occasionnel
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
Merci Laurent950 pour ce code qui fonctionne parfaitement, mais j'ai la même question que pour Soane : tu as codé en "dur" poste1=5, poste2=2, poste3=19, etc... Comment adapter ce code pour que mes poste"x" ne soient pas en dur mais soient variables car proviennent du résultat de calculs plus haut dans la macro ?
En tous cas, merci de ta patience !
 

soan

XLDnaute Barbatruc
Inactif
@Phillip

tu as écrit :

« mais ça plante à la dernière occurence (il dit qu'il ne trouve pas le fichier spécifié) »

oui, tu as raison ! c'est car j'ai oublié qu'il y a 0 pour les arcanes inutilisées ! :oops:

fichier joint corrigé. :) (donc il y a quand même un test If, finalement ! 😜)

dans la sub InsereImage(), la modif est juste avant le Next i :

VB:
For i = 1 To 22
  k = i - 1 'car pour les 3 arrays po, pg, ph : c'est à partir de 0, pas à partir de 1
  If po(k) > 0 Then ActiveSheet.Shapes.AddPicture Filename:=fp & po(k) & ".jpg", linktofile:=msoFalse, _
    savewithdocument:=msoTrue, Left:=pg(k), Top:=ph(k), Width:=100, Height:=140
Next i

soan
 

Pièces jointes

  • testtab.xlsm
    750.7 KB · Affichages: 4
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@Phillip

pour ta question 2) : mon array po est pour remplacer
toutes tes variables poste1, poste2, poste3, ..., Poste22

je suis pas sûr que ça va marcher en mettant :
po=array(poste1, poste2, poste3,...Poste17, 0,0,0,0,0)
mais essaye toujours ; si ça marche, tant mieux !
sinon, faudra faire une adaptation.


soan
 

Phillip

XLDnaute Occasionnel
Bonjour à toutes et tous, et à Soan,

Merci beaucoup ! Pour l'instant, ton code marche à la perfection, avec la modif sur "if" et en remplissant po comme suit
VB:
po = Array(poste1, poste2, poste3, poste4, poste5, poste6, poste7, poste8, poste9, poste10, poste11, poste12, poste13, poste14, poste15, poste16, poste17, 0, 0, 0, 0, 0)

Donc je continue mes tests, mais pour l'instant c'est parfait !

Merci encore

Cordialement

Phillip
 

Discussions similaires