Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier une image suite à une condition

  • Initiateur de la discussion Initiateur de la discussion iosis
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

iosis

XLDnaute Nouveau
Bonjour,

je souhaite attribuer des images spécifiques suivant le résultat d'un calcul,

j'ai les 2 macros suivantes comme exemple mais je n'arrive pas à les faire fonctionner:

Sub copier_image_A()
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$C$2" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
End Sub

Function copier_A(C)

If C < 10 Then Application.Run ("copier_image_A")

End Function


la première fonctionne bien mais je n'arrive à la faire fonctionner avec une condition.

Merci de votre aide,
 
Re : Copier une image suite à une condition

Bonjour,

Ce serais bien que tu nous envoie la macro qui utilise la fonction.

Au fait:

If C < 10 Then Call copier_image_A

marche aussi (plus court).
 
Re : Copier une image suite à une condition

je souhaite utiliser la fonction "copier_a" en utilisant à l'intérieur la macro "copier_image_A()"

je ne suis pas sur d'etre suffisament clair, n'ayant que peu de notion VBA.

merci
 
Re : Copier une image suite à une condition

C'est une valeur numérique résultant d'un calcul.
Et au stade actuel quelque soit la valeur de C, la fonction me renvoie "0" et non l'image attendue.
 
Re : Copier une image suite à une condition

Le calcul de C se trouve dans une cellule d'excel et issue d'un calcul simple et je souhaite donc utiliser la fonction "copier_A" pour afficher une image suivant le résultat de C.

Merci !
 
Re : Copier une image suite à une condition

En supposant que "C" se trouve en A1, tu peux le faire sans fonction:

Sub copier_image_A()
If Range("A1").Value < 10 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$C$2" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next

End If
End Sub

 
Re : Copier une image suite à une condition

suite j'ai réussi à faire fonctionner la macro avec 2 renvois d'image différentes suivant le résultat en A1 suivant le principe ci-dessous :

Sub copier_image_A()
If Range("A1").Value < 10 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$2" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
Else
If 11 < Range("A1").Value < 20 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$3" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
End If
End If
End Sub


mais si je souhaite faire un troisième cas par exemple A1>21 suivant le même principe, cela ne fonctionne pas voir ci-dessous :

Sub copier_image_A()
If Range("A1").Value < 10 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$2" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
Else
If 11 < Range("A1").Value < 20 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$3" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
Else
If Range("A1").Value > 21 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$4" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
End If
End If
End If
End Sub



Je ne comprends pas tout...
 
Re : Copier une image suite à une condition

Et voilà pour le plaisir des yeux 😉

suite j'ai réussi à faire fonctionner la macro avec 2 renvois d'image différentes suivant le résultat en A1 suivant le principe ci-dessous :

Sub copier_image_A()
If Range("A1").Value < 10 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$2" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
Else
If 11 < Range("A1").Value < 20 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$3" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
End If
End If
End Sub

mais si je souhaite faire un troisième cas par exemple A1>21 suivant le même principe, cela ne fonctionne pas voir ci-dessous :

Sub copier_image_A()
If Range("A1").Value < 10 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$2" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
Else
If 11 < Range("A1").Value < 20 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$3" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
Else
If Range("A1").Value > 21 Then
For Each image In ActiveSheet.DrawingObjects
If image.BottomRightCell.Address = "$B$4" Then
image.Select
Selection.Copy
[D2].Select
ActiveSheet.Paste
End If
Next
End If
End If
End If
End Sub


Je ne comprends pas tout...
 
Re : Copier une image suite à une condition

Re,

modifie comme ceci, ça devrait aller mieux.


Code:
Sub copier_image_A()
If Range("A1").Value < 10 Then
    For Each image In ActiveSheet.DrawingObjects
        If image.BottomRightCell.Address = "$B$2" Then
            image.Select
            Selection.Copy
            [D2].Select
            ActiveSheet.Paste
        End If
    Next
ElseIf [B]Range("A1").Value >= 11 And Range("A1").Value <= 20[/B] Then
    For Each image In ActiveSheet.DrawingObjects
        If image.BottomRightCell.Address = "$B$3" Then
            image.Select
            Selection.Copy
            [D2].Select
            ActiveSheet.Paste
        End If
    Next
ElseIf Range("A1").Value > 21 Then
    For Each image In ActiveSheet.DrawingObjects
        If image.BottomRightCell.Address = "$B$4" Then
            image.Select
            Selection.Copy
            [D2].Select
            ActiveSheet.Paste
        End If
    Next
End If
End Sub

D'autre part, j'ai "ordonné" le code, plus facile à lire que d'avoir tout sur la même ligne.
 
Re : Copier une image suite à une condition

Ou bien en utilisant "Select Case", plus approprié:

Code:
Sub copier_image_A()
[B]Select Case Range("A1").Value[/B]
[B]Case Is < 10[/B]
    For Each image In ActiveSheet.DrawingObjects
        If image.BottomRightCell.Address = "$B$2" Then
            image.Select
            Selection.Copy
            [D2].Select
            ActiveSheet.Paste
        End If
    Next
[B]Case 11 To 20[/B]
    For Each image In ActiveSheet.DrawingObjects
        If image.BottomRightCell.Address = "$B$3" Then
            image.Select
            Selection.Copy
            [D2].Select
            ActiveSheet.Paste
        End If
    Next
[B]Case Is > 20[/B]
    For Each image In ActiveSheet.DrawingObjects
        If image.BottomRightCell.Address = "$B$4" Then
            image.Select
            Selection.Copy
            [D2].Select
            ActiveSheet.Paste
        End If
    Next
[B]End Select[/B]
End Sub

Voilà.
 
Re : Copier une image suite à une condition

Bonsoir à tous


Une petite question:

Y-a t-il quelque chose à espérer dans cette voie
Code:
Sub copier_image_A()
Dim valeurs() As Variant
Dim adresses() As Variant
Dim i As Long
Dim j As Long
valeurs = Array(10, 11, 21)
adresses = Array("$B$2", "$B$3", "$B$4")
For j = 0 To UBound(valeurs)
If Range("A1").Value < valeurs(j) Then
For i = 0 To UBound(adresses)
    For Each image In ActiveSheet.DrawingObjects
        If image.BottomRightCell.Address = adresses(i) Then
            image.Select
            Selection.Copy
            [D2].Select
            ActiveSheet.Paste
        End If
    Next
Next i
End If
Next j
End Sub
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
9
Affichages
364
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…