Image et Chekbox

Bonsoir à tous,

Je suis à la recherche d'un code qui me permettrait lorsque ma "CheckBox1" = vrai que mon image "Diabète.jpg" s'affiche dans mon "Image3".

Pourriez-vous m'aider à faire ce code? Pour l'instant j'ai trouvé ce qui suit mais j'ai un message d'erreur:

Le I est surligné avec le message:

Erreur de compilation: Variable non définie.

Private Sub CheckBox1_Click()
Image1.Visible = CheckBox1.Value
For i = 1 To 2000
    DoEvents
Next
End Sub
Private Sub Image3_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
lblImage.Picture = LoadPicture(CheminImage & Diabète.jpg)
End Sub

Merci par avance

Bonsoir,

Si tu as cette erreur, c'est que tu as une option Explicit qui t'oblige à déclarer toutes tes variables, ce que je conseille toujours (avec ou sans option), donc dès que tu places une variable dans une procédure, tu commences par la déclarer en tête de procédure.

Pour le reste il faudrait clarifier tes propos pour les mettre en cohérence avec ton code cité. Je ne vois pas la raison de cette boucle dans la première...

Bonsoir MFerrand

Comme à mon habitude je cherche des informations sur internet sans vraiment tout comprendre.

C'est pour cela que je fais perpétuellement appel au forum.

Malheureusement je ne fais que recopier des codes

bonjour

voila un test avec CheckBox

si tu a du mal a le faire tu envoie un fichier réduit pour voir ton problème

A+

Maurice

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
'Chemin du repertoire image Vehicule
ReperPhoto = ThisWorkbook.Path '& "\" & "Costumes"
Photo = "images.jpg"
'Test le repertoire ou se trouve la photo
Image1.PictureSizeMode = 0
   If Dir(ReperPhoto & "\" & Photo) = "" Then
'         Image1.Picture = LoadPicture(ReperPhoto & "\NoPhoto.gif")
         MsgBox "la photo demandé n'est pas disponible"
      Else
         Image1.PictureSizeMode = fmPictureSizeModeStretch
         Image1.Picture = LoadPicture(ReperPhoto & "\" & Photo)
   End If
 Else
 Image1.Picture = LoadPicture("")
End If
End Sub

Bonsoir ARCHER

Un grand merci Je vais envoyer mon fichier effectivement mais pas ce soir car il est super lourd et je vais devoir le purger avant de pouvoir l'envoyer

Merci,

Jean-Marie

re bonsoir Archer

Pour ouvrir mon fichier excel le mot de passe est:

a11241904

(Pour avoir accès à tous les onglets du ruban, il faut réduire la fenêtre et l'agrandir à nouveau)

Ensuite cliquer sur "RECETTES" et choisir.

Ex.

- Entrées chaudes

- Soufflé au fromage

Ce que je recherche:

Depuis peu mon médecin m'a informé que je suis diabétique, ce qui fait que je vais être obligé de modifier mon livre de recette.

Pour ce faire,j'ai rajouté une case à cocher "DIABETE OUI/NON", qui, si est cochée doit m'afficher dans mon UserForm l'image 'Diabète.jpg"

se trouvant dans le fichier joint: Recettes, Images, Level.

Par la suite, lorsque je clique sur "IMPRIMER" dans mon UserForm, je voudrais que l'image puisse également s'imprimer.

Voilà, j’espère ne pas être trop exigeant. Merci par avance,

Jean-Marie

djodjo a écrit :

Bonsoir MFerrand

Comme à mon habitude je cherche des informations sur internet sans vraiment tout comprendre.

C'est pour cela que je fais perpétuellement appel au forum.

Malheureusement je ne fais que recopier des codes

Ok ! Mais je t'ai signalé l'origine probable de ton erreur, ce que tu pouvais facilement vérifier et confirmer ou non, ce qui aurait été un premier point.

Ensuite tu citais d'abord une première procédure qui faisais passer de Visible à non visible ton contrôle Image1 en fonction de la valeur de la CheckBox. La commande se serait a-priori suffi à elle-même mais étant suivie d'une boucle de temporisation produisant 2000 DoEvents ! Je me demande ce qui peut motiver cette temporisation et que l'on ne peut voir dans le bout de code...

Suivie d'une autre procédure d'évènement glisser-déplacer, sur laquelle on ne peut que se poser des questions et qui pourrait être en contradiction avec la précédente...

Sans explication de ta part sur ce qu'il se passe actuellement, et sur ce qu'il ne se passe pas et que tu voudrais qu'il se passe, on ne peut être en mesure de voir les points qu'il faudrait ajuster ou rectifier...

Pour qu'une appli fonctionne correctement il est plus que souhaitable qu'elle repose sur une conception homogène. Il est déjà difficile d'avoir une homogénéité au niveau du code en le construisant à partir de sources diverses, mais si de plus tu ne te mets pas en mesure de maîtriser ce que chaque élément de code doit faire, et vérifier ce qu'il fait effectivement, la maîtrise conceptuelle du projet risque de t'échapper, et tu risques de laisser s'insérer des éléments reposant sur des conceptions contradictoires qui ne favoriseront pas un bon fonctionnement de l'appli.

Cordialement.

Bonsoir

pour dormir

Private Sub CheckBox1_Click()
Dim Chemin As String
Dim CheminImage As String
Chemin = ThisWorkbook.Path & "\Images\Level\"
CheminImage = Chemin & "Diabète.jpg"
If CheckBox1.Value = True Then
   If Dir(CheminImage) <> "" Then
      Image3.Picture = LoadPicture(CheminImage)
      Else
      Image3.Picture = LoadPicture
   End If
Else
Image3.Picture = LoadPicture
End If
End Sub

A+

Maurice

Bonjour Archer,

Merci beaucoup pour ton code qui fonctionne parfaitement.

Pourraiis-tu maintenant comment modifier le ode pour que l'image3 apparaisse lorque je clique sur imprimer?

Private Sub CommandButton5_Click() 'Envoi feuille Impression
Dim Tablo, i&
  Sheets("IMPRESSION").Select
  [B16:B400].ClearContents
  [A2] = ComboBox1: [A3] = ComboBox2
  [A6] = Textbox2: [B6] = Textbox4
  [A8] = Textbox1: [B8] = Textbox5
  [A10] = Textbox3: [B10] = TextBox8
  [A12] = Textbox9: [B12] = TextBox11
  [A14] = TextBox10: [A16] = TextBox6
  Tablo = Split(TextBox7.Text, Chr(10))
  For i = LBound(Tablo) To UBound(Tablo)
    Cells(i + 16, 2) = Trim(Replace(Tablo(i), Chr(10), ""))
  Next i
  Rows("16:400").EntireRow.AutoFit
  Call InsImage(Image1.Tag, [A4], -1)
  Call InsImage(Image2.Tag, [B4], 0)
  [A1].Activate
  Unload Me
End Sub

Merci par avance

Bonjour

peux être comme ca a tester

A+

Maurice

Private Sub CommandButton5_Click() 'Envoi feuille Impression
Dim Tablo, i&
Sheets("IMPRESSION").Select
  [B16:B400].ClearContents
  [A2] = ComboBox1: [A3] = ComboBox2
  [A6] = Textbox2: [B6] = Textbox4
  [A8] = Textbox1: [B8] = Textbox5
  [A10] = Textbox3: [B10] = TextBox8
  [A12] = Textbox9: [B12] = TextBox11
  [A14] = TextBox10: [A16] = TextBox6
  Tablo = Split(TextBox7.Text, Chr(10))
  For i = LBound(Tablo) To UBound(Tablo)
    Cells(i + 16, 2) = Trim(Replace(Tablo(i), Chr(10), ""))
  Next i
  Rows("16:400").EntireRow.AutoFit

 If CheckBox1.Value = True Then
   ActiveSheet.Shapes.Range(Array("Picture 29")).Select
   Selection.ShapeRange.IncrementLeft -248.5714173228
   Selection.ShapeRange.IncrementTop -115.7142519685
Else
    ActiveSheet.Shapes.Range(Array("Picture 29")).Select
    Selection.ShapeRange.IncrementLeft 270
    Selection.ShapeRange.IncrementTop 130.7142519685
End If
  Unload Me
End Sub

Re

Bonsoir Archer,

La mise en place de l'image Diabète se fait correctement lorsque la case à cocher = vrai, par contre, si je change de recette, l'image de la recette précédente ne change pas. Ce qui fait par exemple:

En premier sélection de la recette d'une choucroute, avec la case à cocher vrai

autre recette, la paélla sans case de cochée et l'image de la choucroute reste affichée

Merci

Jean-Marie

Bonjour

déjà j'ais fait une analyse de tes recettes

j'ais modifier la colonne A de la recette car petit problème d'espace

et jais changer la combobox1 a toi de voir si ca te va

après on verra l'impression et me mettre ton image au bon endroit et faire comme les autres

A+

Maurice

8recettes-2-1.xlsm (673.84 Ko)

Merci beaucoup ARCHER , pour ce travail. Pour l instant aucuns souci pour moi. Mise à part le fait que les images ne s'affichent plus.

Bonne soirée

Jean-Marie

bonsoir

modification impression

A+

Maurice

8recettes-2-1.xlsm (674.16 Ko)

Bonjour Archer,

Petit soucis, la ligne:

Sheets("IMPRESSION").Pictures.Insert(Image).Select

Est marquée en jaune !!!???

Private Sub InsImage(Image$, Cel As Range, Zoom As Boolean)
  If Cel <> "" Then ActiveSheet.Shapes.Range(Array(Cel.Value)).Delete
  Cel.Activate
  Cel = Image
  Sheets("IMPRESSION").Pictures.Insert(Image).Select
  With Selection
  .Name = Image
    If Zoom Then
      .ShapeRange.LockAspectRatio = msoTrue
      .Height = Cel.Height * 0.9
      If .Width > Cel.Width * 0.9 Then
        .Width = Cel.Width * 0.9
      End If
    End If
    .Top = Cel.Top + ((Cel.Height - .Height) / 2)
    .Left = Cel.Left + ((Cel.Width - .Width) / 2)
  End With
End Sub

Bonne journée

Bonjour

quand if prouve pas de photo tu a mis: Image1.Tag = ""

il Faut mettre autre chose ex: Image1.Tag = Chemin & "INEXISTANTE.jpg"

retour de ton fichier modifier

A+

Maurice

28recettes-2-1.xlsm (677.98 Ko)

Bonjour ARCHER,

Je suis vraiment désolé, j'ai beau retourner le code dans tous les sens, cela ne fonctionne pas

bonjour

ca marche cher moi avec le modelé que j'ais envoyer ?

A+

Maurice

Bonsoir,

Je confirme chez moi cela ne fonctionne pas.

Bon WE

Jean-Marie

Bonsoir Archer,

Je pense avoir cerné le soucis chez moi.

- Il ne retrouve plus mes images Initialement le code est écrit afin que les images puissent être sur n'importe quel support connecté au pc,

donc le chemin d'accés non défini, c'est pour cela que le code est:

Image1.Picture = LoadPicture(Chemin & "INEXISTANTE.jpg")

Si je ne dis pas de bêtise "LOADPICTURE", fait comprendre que l'image peut être n importe ou

- lorsque l'on arrive sur la feuille "IMPRESSION", il ne nettoie pas les anciennes images ce qui donne une superpositions d'images.

Pour avoir ce résultat il a fallu que je copie mon fichier image dans "TELECHARGEMENT" de mon oridinateur ou "DOWNLOAD"

Voilà, je ne sais pas si cela te parle, mais merci de m'aider

Jean-Marie

Rechercher des sujets similaires à "image chekbox"