Insérer plusieurs images dans un UserForm

Bonjour
Je veux insérer 4 images dépendants de 4 TextBox dans un UserForm avec le code suivant, qui me donne malheureusement soit 4 images d'un seul coup dans les quatre Image.Picture, soit ne donne aucune image.
Je veux que Chaque image.Picture soit en relation avec un TextBox. Par exemple: Si TextBox1.Value >0; l'image1 soit affichée dans Image1.Picture, Sinon pas d'image. même chose pour TextBox2 et Image2.Picture. etc
Je vous demande de m'aider, Merci à vous

Private  Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 4
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
Next I

On Error GoTo Autre
Image1.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\" & TextBox1 & ".jpg")
Image2.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\" & TextBox2 & ".jpg")
Image3.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\" & TextBox2 & ".jpg")
Image4.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\" & TextBox2 & ".jpg")
Exit Sub
Autre:
Image1.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\Defaut.jpg")
Image2.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\Defaut.jpg")
Image3.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\Defaut.jpg")
Image4.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\Defaut.jpg")
End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.
.


aucun avatar Bzik
Nouveau venu
Nouveau venu

Messages: 1
Inscription: Hier, 20:19
Version Excel: 2010

6 réponses

  1. Contributeur
    C'est reparti avec le Jordane qui pourtant m'avait fichu la paix après ses edit à la c#¤^ il y a quelque temps

    EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).


    DE QUOI TU TE MELES ?


    1/ il existe une balise code qui reste disponible pour un choix de présentation, donc, je choisis ce qui me convient

    2/ Dans beaucoup de zinzin "coloration syntaxique" la longueur des lignes dépasse le cadre il faut alors descendre et manoeuvrer pour lire ce qui est écrit en fin de ligne
    il faut alors remonter jusqu'à la ligne maid là, on ne voit plus le début de la ligne !!!! très pratique

    3/ Bien qu'il n'y ait pas de propriété intellectuelle du code indiquée, il est d'usage d'indiquer la source, c.ad apparament Caféine sur DVP (code d'ailleurs intéressant avec les regexp)

    Pourtant, je croyais que tu avais compris mon aversion pour ce gadget suite à nos discussions houleuses

    alors FICHE MOI LA PAIX UNE BONNE FOIS POUR TOUTES

    A l'attention de Bzik:

    Bonjour,

    Suite à l'intervention intempestive de ce Monsieur Jordane, j'abandonne le suivi de notre discussion, dommage, mais j'en ras le bol de cet individu
    1
    1. Contributeur
      Bonjour

      1/
      Image3.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\" & TextBox2 & ".jpg")
      Image4.Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\" & TextBox2 & ".jpg")
      donc image 2,3, 4 sont les m^mes par la valeur de textbox 2 ?

      2/ donne rien
      si tu as une erreur dans un textbox, tous les controle image auront défaut jpg
      il faut que l'erreur soit personnifiée sur chaque ligne de remplissage
      par exemple
      For I = 1 To 4
          Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
          On Error Resume Next
          controle image concerné  par textbox conerné
          If Err.Number > 0 Then
              defaut.jpg dans controle image concerné
          End If
          On Error GoTo 0
      Next I
      


      EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
      Explications disponibles ici :
      https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

      Merci d'y penser dans tes prochains messages.
      .

      Michel
      0
      1. Bonjour Michel
        Merci pour votre Réponse ci-vite.
        J'ai changé le code par celui-la:

        Private ComboBox1_Change()
        Dim Ligne As Long
        Dim I As Integer
        Ligne = Me.ComboBox1.ListIndex + 2

        For I = 1 To 4
        Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
        Next I

        For I = 1 To 4
        On Error GoTo Autre

        Me.Controls("Image" & I).Picture =LoadPicture("C:\Users\bzik\Desktop\Rhita\" & Me.Controls("TextBox" & I) & ".jpg")
        Next I
        Exit Sub

        Autre:
        Me.Controls("Image" & I).Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\Defaut.jpg")
        End Sub

        En changeant les valeurs TextBox, le problème c'est que Lorsque la ligne:

        Me.Controls("Image" & I).Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\Defaut.jpg")

        s'exécute pour une image.Picture donnée, La ligne:

        Me.Controls("Image" & I).Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\" & Me.Controls("TextBox" & I) & ".jpg")

        ne s'exécute plus dans la suivante. elle garde l'image antérieur jusqu'à ce que l'image correspondante à cette Image.Picture se trouve dans le dossier C:\.... .
        Cordialement
        0
        1. Je veux dire que pour un ComboBox donné, si les 3 premiers TextBox correspondants ne sont pas vides et si j'ai les 3 images correspondantes dans mon dossier "C:\....." alors les 3 images sont bien affichées.
          Mais pour le suivant ComboBox qui ne donne que 2 TextBox non vides, alors les 2 images sont affichées dans les 2 premiers Image.Picture, tandis-que le 3ème garde la même image antérieur, jusqu'à ce que le 3ème TextBox Soit non vide.
          Merci
          0
          1. comment faire pour effacer les images antérieures des Image.Picture suivants?
            Merci
            0
            1. J'ai refait le code avec votre suggestion c'est beaucoup mieux sans afficher l'mage Défaut dans les Image.Picture, ça reste vides. mais le problème est toujours le même.

              For I = 1 To 4
              Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
              Next I

              On Error Resume Next
              For I = 1 To 4
              Me.Controls("Image" & I).Picture = LoadPicture("C:\Users\bzik\Desktop\Rhita\" & Me.Controls("TextBox" & I) & ".jpg")
              Next I
              Exit Sub
              If Err.Number > 0 Then
              End If
              On Error GoTo 0
              0