Photo Userform vers Excel
Résolu/Fermé
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
-
Modifié par pijaku le 28/05/2015 à 12:01
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 - 3 juin 2015 à 12:39
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 15 mars 2023 - 3 juin 2015 à 12:39
A voir également:
- Photo Userform vers Excel
- Liste déroulante excel - Guide
- Formule excel - Guide
- Traduction photo - Guide
- Windows 7 vers windows 10 - Guide
- Transferer photo android vers pc - Guide
11 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
28 mai 2015 à 12:10
28 mai 2015 à 12:10
Bonjour,
1- déclare ta variable NDFPhoto en entête du module de l'userform
2- tes codes devraient être comme ceci :
1- déclare ta variable NDFPhoto en entête du module de l'userform
2- tes codes devraient être comme ceci :
Dim NDFPhoto As String
Private Sub Ajouter_photo_Click()
NDFPhoto = Application.GetOpenFilename
On Error Resume Next
Me.Image1.Picture = LoadPicture(NDFPhoto)
End Sub
Private Sub Enregistrer_Click()
Sheets("Résidents").Select
Rows("3:3").Select
Selection.Insert shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
If MsgBox("Confirmez-vous l'ajout des données?", vbYesNo, "Confirmation") = vbYes Then
Cells(3, 1) = ComboBoxCivilité.Value
Cells(3, 2) = NOM.Value
Cells(3, 3) = Prénom.Value
Cells(3, 4) = Néle.Value
With ActiveSheet.Pictures.Insert(NDFPhoto)
.Top = Cells(3, 5).Top
.Left = Cells(3, 5).Left
'ici tu peux préciser la taille
'.Width = 20
'.Height = 15
End With
Selection.Font.Bold = False
Unload UserForm1
Load UserForm1
UserForm1.Show
End If
End Sub
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
28 mai 2015 à 15:52
28 mai 2015 à 15:52
Merci pijaku pour ton retour.
Mais j'ai un bug.
J'ai recopié ton code mais je crois que mon erreur est de pas savoir positionner la variable NDFPhoto en entête du module de l'userform .
Je te joins mon fichier, je pense que cela sera plus explicite. Les photos à appliquer dans la feuille excel doivent être positionnées en fait dans la colonne AU
https://www.cjoint.com/?3ECpWEpFj5T
Merci à toi
Mais j'ai un bug.
J'ai recopié ton code mais je crois que mon erreur est de pas savoir positionner la variable NDFPhoto en entête du module de l'userform .
Je te joins mon fichier, je pense que cela sera plus explicite. Les photos à appliquer dans la feuille excel doivent être positionnées en fait dans la colonne AU
https://www.cjoint.com/?3ECpWEpFj5T
Merci à toi
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
28 mai 2015 à 15:55
28 mai 2015 à 15:55
Oui, tu l'as mis dans une Sub.
la déclaration Dim NDFPhoto As String doit être la première ligne de ton module. Au dessus de Private Sub ComboBox1_Change()
En haut du module et en dehors de toute procédure ou fonction.
la déclaration Dim NDFPhoto As String doit être la première ligne de ton module. Au dessus de Private Sub ComboBox1_Change()
En haut du module et en dehors de toute procédure ou fonction.
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
28 mai 2015 à 16:42
28 mai 2015 à 16:42
J'avais essayé cette position mais ce qu'il se passe est que quand on omet d'ajouter une photo à partir du Userform ça bug sur
"With ActiveSheet.Pictures.Insert(NDFPhoto)". il faudrait peut-être ajouter un code if "pas de photo"
Autrement ça fonctionne.
"With ActiveSheet.Pictures.Insert(NDFPhoto)". il faudrait peut-être ajouter un code if "pas de photo"
Autrement ça fonctionne.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
29 mai 2015 à 07:41
29 mai 2015 à 07:41
Bonjour,
Ben oui.
Fais ça.
Le code pour if "pas de photo" est :
à ajouter à ta macro comme ceci :
il faudrait peut-être ajouter un code if "pas de photo"
Ben oui.
Fais ça.
Le code pour if "pas de photo" est :
If Not Me.Image1.Picture Is Nothing Then
à ajouter à ta macro comme ceci :
If Not Me.Image1.Picture Is Nothing Then
With ActiveSheet.Pictures.Insert(NDFPhoto)
.Top = Cells(3, 5).Top
.Left = Cells(3, 5).Left
'ici tu peux préciser la taille
'.Width = 20
'.Height = 15
End With
End If
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
Modifié par pijaku le 2/06/2015 à 14:03
Modifié par pijaku le 2/06/2015 à 14:03
Bonjour pijaku,
C'est donc Ok pour ta dernière modif.
Par contre où je bute encore c'est dans mon formulaire userform qui ne m'affiche pas la photo quand je vais chercher une fiche avec le bouton "Recherche" (CommandButton2). J'ai bien essayé :Image1.Picture = LoadPicture(NDFPhoto) (voir par ailleurs le code) mais aucune image apparait.
dans la feuille excel les photos apparaissent dans la colonne "AU" soit le n° de ligne 47
Romanza
C'est donc Ok pour ta dernière modif.
Par contre où je bute encore c'est dans mon formulaire userform qui ne m'affiche pas la photo quand je vais chercher une fiche avec le bouton "Recherche" (CommandButton2). J'ai bien essayé :Image1.Picture = LoadPicture(NDFPhoto) (voir par ailleurs le code) mais aucune image apparait.
dans la feuille excel les photos apparaissent dans la colonne "AU" soit le n° de ligne 47
Private Sub CommandButton2_Click() Dim no_ligne As Integer no_ligne = ComboBox1.ListIndex + 3 ComboBoxCivilité.Value = Cells(no_ligne, 1).Value NOM.Value = Cells(no_ligne, 2).Value Prénom.Value = Cells(no_ligne, 3).Value '... '... Ressources.Value = Cells(no_ligne, 44).Value Montant.Value = Cells(no_ligne, 45).Value Profession.Value = Cells(no_ligne, 46).Value Image1.Picture = LoadPicture(NDFPhoto) Enregistrer.Locked = True Enregistrer.Enabled = False Nouvellefiche.Enabled = True End Sub
Romanza
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
2 juin 2015 à 14:04
2 juin 2015 à 14:04
Bonjour,
Peux tu joindre ton fichier tel qu'il est maintenant?
Peux tu joindre ton fichier tel qu'il est maintenant?
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
2 juin 2015 à 14:26
2 juin 2015 à 14:26
Voilà,
http://www.cjoint.com/c/EFcmzsheLdi
http://www.cjoint.com/c/EFcmzsheLdi
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
Modifié par pijaku le 2/06/2015 à 15:49
Modifié par pijaku le 2/06/2015 à 15:49
Donc...
2 choix :
1- Simplement :
Lors de l'enregistrement de la photo (bouton enregistrer) : noter, dans la cellule, le chemin de l'image :
On peut le cacher en changeant le format de la colonne 47. Suffit de régler la couleur de police et le fond sur blanc...
Lors de l'appel par clic sur le bouton recherche, on ajoute :
2- méthode complexe :
- tu boucles sur tous les Shapes de ta feuille
- Si ShapeEnCours.Top = maLigne.Top => c'est la bonne image
- on utilises une fonction de copie/collage d'image de shape dans userform
Tu choisis quoi???
2 choix :
1- Simplement :
Lors de l'enregistrement de la photo (bouton enregistrer) : noter, dans la cellule, le chemin de l'image :
With ActiveSheet.Pictures.Insert(NDFPhoto)
.Top = Cells(3, 47).Top
.Left = Cells(3, 47).Left
'ici tu peux préciser la taille
.Width = 65
.Height = 65
End With
Cells(3, 47) = NDFPhoto
End If
On peut le cacher en changeant le format de la colonne 47. Suffit de régler la couleur de police et le fond sur blanc...
Lors de l'appel par clic sur le bouton recherche, on ajoute :
Me.Image1.Picture = LoadPicture(Cells(no_ligne, 47).Value)
2- méthode complexe :
- tu boucles sur tous les Shapes de ta feuille
- Si ShapeEnCours.Top = maLigne.Top => c'est la bonne image
- on utilises une fonction de copie/collage d'image de shape dans userform
Tu choisis quoi???
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 juin 2015 à 16:43
2 juin 2015 à 16:43
Je choisis la méthode simple.
Par contre je m'aperçois qu'après avoir afficher une fiche, si l'on veut modifier la photo (erreur ou photo plus récente), il faut pouvoir faire un annule et remplace avec le bouton "Ajouter photo".
Par contre je m'aperçois qu'après avoir afficher une fiche, si l'on veut modifier la photo (erreur ou photo plus récente), il faut pouvoir faire un annule et remplace avec le bouton "Ajouter photo".
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
>
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2 juin 2015 à 16:45
2 juin 2015 à 16:45
Grrrrr.........
Comme dis précédemment :
Comme dis précédemment :
Cells(3, 47) = NDFPhoto
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
2 juin 2015 à 17:03
2 juin 2015 à 17:03
Oui j'ai bien mis Cells(3, 47) = NDFPhoto dans l'enregistrement comme tu me l'a indiqué mais...
1) je recherche une fiche
2) la fiche s'affiche sur le formulaire avec la photo
3) je clique sur "Ajouter photo" pour la changer
3) je clique sur "Modifier"
Dans la cellule excel, la nouvelle photo vient se superposer sur la première.
Est ce dans la sub du bouton d'ajout photo il ne doit pas y avoir un code du type : "si la fiche présente déjà une photo, alors la supprimer"?
1) je recherche une fiche
2) la fiche s'affiche sur le formulaire avec la photo
3) je clique sur "Ajouter photo" pour la changer
3) je clique sur "Modifier"
Dans la cellule excel, la nouvelle photo vient se superposer sur la première.
Est ce dans la sub du bouton d'ajout photo il ne doit pas y avoir un code du type : "si la fiche présente déjà une photo, alors la supprimer"?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
3 juin 2015 à 07:27
3 juin 2015 à 07:27
Bonjour,
Oui, tu as raison.
Peux tu me faire passer un fichier déjà fait avec quelques images?
Remplace les photos par d'autres, bien entendu, à des fins d'anonymat...
Oui, tu as raison.
Peux tu me faire passer un fichier déjà fait avec quelques images?
Remplace les photos par d'autres, bien entendu, à des fins d'anonymat...
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
3 juin 2015 à 10:04
3 juin 2015 à 10:04
Bonjour pijaku,
Voilà :
https://www.cjoint.com/c/EFdidvmyimi
Voilà :
https://www.cjoint.com/c/EFdidvmyimi
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
Modifié par pijaku le 3/06/2015 à 10:38
Modifié par pijaku le 3/06/2015 à 10:38
Bonjour,
Voilà ton fichier.
Je t'ai créé une Sub Si_Deja_Photo_Alors_Supprime_La, qui fait ce que son nom indique... lol
Sinon, j'ai également passé un quart d'heure à indenter ton code correctement.
Il était illisible. Il l'est davantage...
Voilà ton fichier.
Je t'ai créé une Sub Si_Deja_Photo_Alors_Supprime_La, qui fait ce que son nom indique... lol
Sinon, j'ai également passé un quart d'heure à indenter ton code correctement.
Il était illisible. Il l'est davantage...
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
3 juin 2015 à 10:55
3 juin 2015 à 10:55
Ok, je pars en réunion et je regarde..;Merci
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
3 juin 2015 à 12:06
3 juin 2015 à 12:06
merci pour tout pikaju, c'est ce que je souhaitais.
Dernière requête la photo dans la cellule est placée en haut et à gauche avec le code :
With .Pictures.Insert(NDFPhoto)
.Top = Cells(3, 47).Top
.Left = Cells(3, 47).Left
Comment je fais pour la centrer au milieu de la cellule;
merci à toi
Dernière requête la photo dans la cellule est placée en haut et à gauche avec le code :
With .Pictures.Insert(NDFPhoto)
.Top = Cells(3, 47).Top
.Left = Cells(3, 47).Left
Comment je fais pour la centrer au milieu de la cellule;
merci à toi
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
3 juin 2015 à 12:26
3 juin 2015 à 12:26
Surtout tu ne la centres pas verticalement!
Pour que tes macros fonctionnent il faut que le Top de ton image soit égal au top de la cellule.
Pour la centrer horizontalement, c'est un peu d'arithmétique de base non?
Le left de ton image est égal au left de la cellule + (Width de la cellule - Width de l'image) / 2
Pour que tes macros fonctionnent il faut que le Top de ton image soit égal au top de la cellule.
Pour la centrer horizontalement, c'est un peu d'arithmétique de base non?
Le left de ton image est égal au left de la cellule + (Width de la cellule - Width de l'image) / 2
romanza
Messages postés
250
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
4 octobre 2021
2
3 juin 2015 à 12:30
3 juin 2015 à 12:30
ok merci ncore
Romanza
Romanza
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 mars 2023
2 712
3 juin 2015 à 12:39
3 juin 2015 à 12:39
de rien
A++
A++