INSERTION

Bonjour à tous,

J'ai un petit souci j'arrive à insérer une image au dimension de la cellule "D2" or j'aimerais qu'elle s’insère dans la colonne "D" comme toute les valeurs "Date et Heure","Dépassement","Justification".

Private Sub CommandButton1_Click()
 Dim x As Integer
   x = ActiveSheet.Range("a65536").End(xlUp).Row + 1
ActiveSheet.Range("A" & x).Value = Me.TextBox3 'Date et heure
ActiveSheet.Range("B" & x).Value = Me.TextBox4 'Dépassement
ActiveSheet.Range("C" & x).Value = Me.TextBox5 'Justification

Chemin = ThisWorkbook.Path & "\" 'Insertion d'une image externe
MyImage = TextBox6.Value
    ActiveSheet.Pictures.Insert(Chemin & MyImage & ".jpg").Name = MyImage
        Set c = Range("D2") 'Pour que l'image occupe la cellule en hauteur et largeur
            With ActiveSheet
                .Shapes(MyImage).Left = c.Left
                .Shapes(MyImage).Top = c.Top
                .Shapes(MyImage).LockAspectRatio = msoFalse
                .Shapes(MyImage).Height = c.Height
                .Shapes(MyImage).Width = c.Width
                End With
end sub

Merci,

Salut Poutch,

Avec un fichier, ça aurait été plus facile à te répondre. Mais ça, peut-être qu'on ne te l'a encore jamais dit

En modifiant ta ligne de code

Set c = Range("D2")

par

Set c = Range("D" & x) 

ton image va aller se placer sur la même ligne que les autres valeurs.

Si ce n'est pas suffisant, merci d'être plus précis dans la description de ton problème.

Cordialement.

NB : Selon la Charte du Forum - que je t'encourage à lire - au point 3 : évite les titres en majuscules !

Bonjour,

le problème c'est que l'image se colle sur D2 sans problème mais dès que je rajoute des lignes au lieu de reproduire l'image sur chaque ligne suivante elle récupère l'image en D2 pour la mettre dans la ligne suivante.

3 petite info sur le fichier:

  • Dans NOM on met le nom d'une photo
  • Pour activer la photo, on appuie sur le bouton "photo" (petit souci que j'essaie de résoudre il devrai se faire automatiquement)
  • Les 3 P.J son à mettre dans un même dossier, j'ai essayer de zipper mon dossier pour te l'envoyer le pb c'est que lorsque l'on fait ça les macros ne fonctionne plus.
merci,

chat1 chien1
9textbox.xlsm (37.71 Ko)

Salut,

Merci plutôt à toi d’avoir posé la question

poutch89 a écrit :

le problème c'est que l'image se colle sur D2 sans problème ...

...mais tu as quand même modifié ton code selon mon conseil, ça fait quand même plaisir, bien que tu ne l'avoues pas.

En ne refermant pas le UserForm à chaque fois, on n’est pas toujours sur la bonne feuille au lancement du code ‘CommandButton1_Click’. Moi je laisserai la ligne Unload UserForm2

Pour l’instant je n’ai pas de solution à ton problème, mais je voudrais quand même te faire part d’un ou deux essais que j’ai effectués.

Comme je n’avais pas d’image de chien sous la main, j’ai renommé ton chat ‘Chien2’.

Dans la première copie d'écran ci-dessous, tu vois que si tu utilises pour la première fois une image, il n’y a pas de problème, elle vient s’inscrire au bon endroit et sans être présente en-dessous. Chien2 (ton chat) est bien présent sur la ligne 4 et uniquement sur la ligne 4.

Le problème semble venir lorsque tu utilises une deuxième fois la même image. Dans la deuxième copie d'écran ci-dessous, on voit que lorsque l’image ‘Chien2’ est réutilisée, tout d’abord elle disparait de la ligne où elle se trouvait précédemment (dans mon exemple, elle disparait de la ligne 4 pour apparaitre dans la ligne 5) et qu’en plus elle apparait une fois de plus – d’une manière semble-t-il non désirée – en-dessous. Aie !!

Comme je t’ai dit, je n’ai pas de solution pour l’instant mais une question : est-il vraiment possible que tu utilises plusieurs fois la même image ou est-ce que dans la réalité, ceci ne se passe jamais ?

Si tu réponds oui à la question précédente, pourquoi ne pas tenter de créer à chaque nouvelle utilisation des copies de photos - numérotées selon une certaine incrémentation à créer encore - de manière à ce que tu n’utilises jamais des originaux de tes photos, mais des copies renommées à chaque fois différemment ? Ainsi, par exemple, lorsque tu voudrais utiliser la photo Chien1, on créerait la photo Chien1-1 et c’est celle-ci qui viendrait placée sur ton fichier, la deuxième fois que tu voudrais utiliser la même photo, ce serait la photo Chien1-2 qui serait créée et utilisée, etc. Je ne te dis pas que ceci sera vraiment possible, mais si nécessaire, on pourrait chercher dans cette direction. Bien entendu que ces copies d'image créées et avec une numérotation incrémentée seraient ajoutées au fur et à mesure dans un dossier réel quelque part dans ton arborescence.

capture1 capture2

Afin de faire apparaitre la photo dans le UserForm sans passer par le bouton ‘PHOTO’ (POURQUOI EN MAJUSCULES ??), tu peux placer le code suivant dans ton UserForm :

Private Sub TextBox6_AfterUpdate()
Chemin = ThisWorkbook.Path & "\"
MyImage = TextBox6.Value
Image1.Picture = LoadPicture(Chemin & MyImage & ".jpg")
End Sub

Amicalement.

Merci, Yvouille pour tes explications, pour répondre à ta question, oui l’image doit apparaitre à plusieurs reprise cela ne me gêne pas que les copies d’image s’incrémente dans mon dossier, mais est-ce possible ? Puisque l’identifiant et en lien avec le nom, ainsi le nom « Chien1-1 » doit être en lien avec l’identifiant CHIEN1.

p.s : En ce qui concerne mon souci pour faire apparaitre la photo dans l’userform super sympas d’avoir résolu mon problème.

En tâtonnant un peu – mon Dieu, c’est génial d’avoir un fichier à disposition pour faire des essais – j’ai eu l’idée d’importer comme tu le faisais l’image de base, de la copier une fois qu’elle est dans Excel, d’en utiliser la copie pour la placer dans la colonne D (sous un nouveau nom choisi par Excel) puis d’effacer l’original importé.

Ainsi, tu peux importer autant de fois que tu veux ton original, il n’aura jamais le même nom que les copies effectuées et tu n’as pas plusieurs images identiques dans ton arborescence.

Le nouveau nom choisi par Excel étant incrémenté automatiquement (Image7, Image8, Image9, etc.) tu n’as pas à t’en soucier.

A te relire.

20textbox-v1.xlsm (244.41 Ko)

Bonjour Yvouille,

Merci d'avoir pris le temps de m'aider ça fonctionne super bien, c'est sympas d'avoir mit les commentaires sur le code ça m'aide beaucoup. Une petite question je n'ai pas compris ce qu'il se passe dans la colonne E?

a++

Re,

En langage VBA, tu peux beaucoup apprendre en tâtonnant. Si tu avais essayé de neutraliser la ligne Range("E" & x).Select afin de voir ce qu’elle ne faisait plus, tu aurais vu que l’image nouvellement insérée restait sélectionnée. Ma ligne Range("E" & x).Select n’a donc pas d’autre but que de sélectionner une cellule quelconque afin d’annuler la sélection de l’image.

Dans mes deux copies d’écran d’hier soir par exemple, tu vois le rectangle de sélection de l’image ‘Chien2’.

Tu aurais aussi pu lancer le code au pas à pas afin d’en voir étape après étape son déroulement. Voir à ce sujet le fil https://forum.excel-pratique.com/cours-astuces/methodes-point-d-arret-et-pas-a-pas-t59460.html

Amicalement.

ok, merci beaucoup pour ton lien

Bonjour yvouille,

j'ai u nouveau souci avec le fichier l'onglet "stephane cavoret' est censé résumé tout les autres onglets or seul les textbox sont transféré et j'ai une erreur "erreur définie par l'application ou par l'objet".

15textbox-v1-5.xlsm (245.44 Ko)

Salut,

Désolé, je n’ai pas vu ton message avant-hier soir.

Ton code est assez catastrophique. Par exemple tu mélanges des lignes devant lesquelles tu places l’instruction Sheets("STEPHANE CAVORET") et à d’autres endroits tu utilises l’instruction With Sheets("STEPHANE CAVORET") / End With. La logique voudrait que tu places la ligne With Sheets("STEPHANE CAVORET") tout au début des instructions concernant cette feuille et que supprimes les mots Sheets("STEPHANE CAVORET") partout ailleurs. Regarde comment je l’ai fait dans le fichier ci-joint. On pourrait faire de même pour la première partie du code où tu mélanges les lignes indiquant ActiveSheet.xxxxxxx et le passage With ActiveSheet / End With.

Ensuite tu effaces les images importées au milieu de ton code pour les réimporter deux lignes plus bas, tu définis des variables qui sont déjà correctement définies (Chemin, MyImage), etc., etc.

Par manque de temps et d’envie de corriger un code si approximatif et si illogique, je me suis contenté de corriger le minimum de lignes afin que ça fonctionne quand même. A toi de voir comment tu peux t’en inspirer.

Si ton fil n’est toujours pas résolu, enlève l’indication qu’il l’est en cliquant sur le petit V rouge dans l’un de tes messages.

Cordialement.

Merci yvouille,

Cela fonctionne très bien, j'ai effectué les corrections que tu m'as dis pour arranger mon code

Ps: encore désolé pour avoir tarder à te répondre

Rechercher des sujets similaires à "insertion"