Inserer des photos en fonction de son numero dans une cellule

Résolu
niewbiesVBA
Messages postés
51
Date d'inscription
jeudi 15 janvier 2015
Statut
Membre
Dernière intervention
2 mars 2015
- 17 janv. 2015 à 18:40
niewbiesVBA
Messages postés
51
Date d'inscription
jeudi 15 janvier 2015
Statut
Membre
Dernière intervention
2 mars 2015
- 4 févr. 2015 à 19:49
Bonsoir à tous,

Ma question n'est pas très clair car je ne savais pas comment la poser, mais je vous expliquer ce que je souhaite :

Je possède un tableau, chaque ligne de se tableau correspondent à un défaut, et fais donc l'objet d'un rapport.

A la fin de chaque ligne se trouve les numéro de photos associée a ce défaut.

Les photos sont stockées dans un dossier spécifiques.

j'ai créé un bouton nommé "créer fiche" (pour les rapports), je voudrais que les photo puisse s'ajouter dans leur cases respective sur les rapports mais je ne sais pas si cela est possible en VBA (bien que j'espère que oui), pourriez vous m'orienter à ce niveau ?

Je vous remercie tous pour votre aide

Bonne soirée

23 réponses

niewbiesVBA
Messages postés
51
Date d'inscription
jeudi 15 janvier 2015
Statut
Membre
Dernière intervention
2 mars 2015

2 févr. 2015 à 14:39
Bonjour ucfoutu,

Effectivement, tu as raison, mais j'ai écris ce code rapidement et ai vu mes erreurs après... voici le code complet et fonctionnelle :

Sub creer_fiches(control As IRibbonControl)

Dim bdd As Workbook, Fvierge As Workbook
Dim rep As String
Dim Classeurpath As String
Dim Classeurphoto As String
Dim accessibilite, inaccessibilite, accespart, accescom, faiencage, ecaillage, cloqgonf, eclatbeton, betonautre As String
Dim niveau, atelier, SALLE1, SALLE2, betoncom, traversante, nontraversante, noncaracterisable, infiltrante, enreseau As String
Dim sup1mm, inf1mm, emax, emaxsalle2, corrosion, pasdacier, acierapparent, naturelle, rougeatre, blanchatre As String
Dim trace, pastrace, coulure, humidite, seche, efflorescence, aureole As String
Dim nfiche, nb, chemin, salle1_3R, salle1_zone4, salle1_feu, salle1_ext, salle1_123 As String
Dim salle2_3R, salle2_zone4, salle2_feu, salle2_ext, salle2_123, murN, murO, murS, murE, PLANCHER As String
Dim RADIER, PLAFOND, POTEAU, POUTRE, INTERIEUR, remarques As String

'chemin = Sheets("BDD").Range("AZV1").Value (en prévision, ne sert a rien pour le moment)
nb = Sheets("BDD").Range("AZT1").Value

'i est le nombre de fissures, la ligne de départ est 5, le nombre de fissures est n

'ligne_fin = 5 + nb - 1
ligne_fin = Cells.Find("*", Range("B1"), , , xlByRows, xlPrevious).Row


rep = Environ("USERPROFILE") & "\"
Classeurpath = rep & "Documents\HagueInspection\Fiches\Fvierge.xlsm"
Classeurphoto = rep & "Documents\HagueInspection\Photos\RIMG"

Set bdd = ThisWorkbook
Set Fvierge = Workbooks.Open(Classeurpath)


With Fvierge.Worksheets("Fvierge")
For i = 5 To ligne_fin
'ici j'écris le code qui remet toutes les valeurs de BDD vers le Rapport
nfiche = bdd.Worksheets("BDD").Range("G" & i)
Sheets("Fvierge").Copy Before:=Sheets("Fvierge")
ActiveSheet.Name = nfiche


atelier = bdd.Worksheets("BDD").Range("C" & i).Value
niveau = bdd.Worksheets("BDD").Range("D" & i).Value
SALLE1 = bdd.Worksheets("BDD").Range("E" & i).Value
SALLE2 = bdd.Worksheets("BDD").Range("F" & i).Value
accessibilite = bdd.Worksheets("BDD").Range("Q" & i).Value
inaccessibilite = bdd.Worksheets("BDD").Range("R" & i).Value
accespart = bdd.Worksheets("BDD").Range("S" & i).Value
accescom = bdd.Worksheets("BDD").Range("T" & i).Value
faiencage = bdd.Worksheets("BDD").Range("U" & i).Value
ecaillage = bdd.Worksheets("BDD").Range("V" & i).Value
cloqgonf = bdd.Worksheets("BDD").Range("W" & i).Value
eclatbeton = bdd.Worksheets("BDD").Range("X" & i).Value
betonautre = bdd.Worksheets("BDD").Range("Y" & i).Value
betoncom = bdd.Worksheets("BDD").Range("Z" & i).Value
nontraversante = bdd.Worksheets("BDD").Range("AA" & i).Value
traversante = bdd.Worksheets("BDD").Range("AB" & i).Value
noncaracterisable = bdd.Worksheets("BDD").Range("AC" & i).Value
infiltrante = bdd.Worksheets("BDD").Range("AD" & i).Value
enreseau = bdd.Worksheets("BDD").Range("AE" & i).Value
emax = bdd.Worksheets("BDD").Range("AF" & i).Value
emaxsalle2 = bdd.Worksheets("BDD").Range("AG" & i).Value
inf1mm = bdd.Worksheets("BDD").Range("AH" & i).Value
sup1mm = bdd.Worksheets("BDD").Range("AI" & i).Value
corrosion = bdd.Worksheets("BDD").Range("AJ" & i).Value
pasdacier = bdd.Worksheets("BDD").Range("AK" & i).Value
acierapparent = bdd.Worksheets("BDD").Range("AL" & i).Value
naturelle = bdd.Worksheets("BDD").Range("AM" & i).Value
rougeatre = bdd.Worksheets("BDD").Range("AN" & i).Value
blanchatre = bdd.Worksheets("BDD").Range("AO" & i).Value
pastrace = bdd.Worksheets("BDD").Range("AP" & i).Value
trace = bdd.Worksheets("BDD").Range("AQ" & i).Value
coulure = bdd.Worksheets("BDD").Range("AR" & i).Value
humidite = bdd.Worksheets("BDD").Range("AS" & i).Value
seche = bdd.Worksheets("BDD").Range("AT" & i).Value
efflorescence = bdd.Worksheets("BDD").Range("AU" & i).Value
aureole = bdd.Worksheets("BDD").Range("AV" & i).Value
salle1_3R = bdd.Worksheets("BDD").Range("AW" & i).Value
salle1_zone4 = bdd.Worksheets("BDD").Range("AX" & i).Value
salle1_feu = bdd.Worksheets("BDD").Range("AY" & i).Value
salle1_ext = bdd.Worksheets("BDD").Range("AZ" & i).Value
salle1_123 = bdd.Worksheets("BDD").Range("BA" & i).Value
salle2_3R = bdd.Worksheets("BDD").Range("BB" & i).Value
salle2_zone4 = bdd.Worksheets("BDD").Range("BC" & i).Value
salle2_feu = bdd.Worksheets("BDD").Range("BD" & i).Value
salle2_ext = bdd.Worksheets("BDD").Range("BE" & i).Value
salle2_123 = bdd.Worksheets("BDD").Range("BF" & i).Value
murN = bdd.Worksheets("BDD").Range("H" & i).Value
murS = bdd.Worksheets("BDD").Range("I" & i).Value
murO = bdd.Worksheets("BDD").Range("J" & i).Value
murE = bdd.Worksheets("BDD").Range("K" & i).Value
PLANCHER = bdd.Worksheets("BDD").Range("L" & i).Value
RADIER = bdd.Worksheets("BDD").Range("M" & i).Value
PLAFOND = bdd.Worksheets("BDD").Range("N" & i).Value
POUTRE = bdd.Worksheets("BDD").Range("O" & i).Value
POTEAU = bdd.Worksheets("BDD").Range("P" & i).Value
remarques = bdd.Worksheets("BDD").Range("BG" & i).Value
Sheets(nfiche).Range("F6") = nfiche
Sheets(nfiche).Range("E8") = atelier
Sheets(nfiche).Range("P8") = niveau
Sheets(nfiche).Range("E9") = SALLE1
Sheets(nfiche).Range("E10") = SALLE2
Sheets(nfiche).Range("G16") = accessibilite
Sheets(nfiche).Range("J16") = inaccessibilite
Sheets(nfiche).Range("O16") = accespart
Sheets(nfiche).Range("S16") = accescom
Sheets(nfiche).Range("G26") = faiencage
Sheets(nfiche).Range("G28") = ecaillage
Sheets(nfiche).Range("G30") = cloqgonf
Sheets(nfiche).Range("J26") = eclatbeton
Sheets(nfiche).Range("J28") = betonautre
Sheets(nfiche).Range("K30") = betoncom
Sheets(nfiche).Range("G38") = nontraversante
Sheets(nfiche).Range("G40") = traversante
Sheets(nfiche).Range("G42") = noncaracterisable
Sheets(nfiche).Range("J38") = infiltrante
Sheets(nfiche).Range("J40") = enreseau
Sheets(nfiche).Range("P40") = emax
Sheets(nfiche).Range("P42") = emaxsalle2
Sheets(nfiche).Range("J42") = inf1mm
Sheets(nfiche).Range("O38") = sup1mm
Sheets(nfiche).Range("Z26") = corrosion
Sheets(nfiche).Range("Z28") = pasdacier
Sheets(nfiche).Range("Z30") = acierapparent
Sheets(nfiche).Range("G50") = naturelle
Sheets(nfiche).Range("G52") = rougeatre
Sheets(nfiche).Range("G54") = blanchatre
Sheets(nfiche).Range("O50") = pastrace
Sheets(nfiche).Range("O53") = trace
Sheets(nfiche).Range("V50") = coulure
Sheets(nfiche).Range("V52") = humidite
Sheets(nfiche).Range("V54") = seche
Sheets(nfiche).Range("Z50") = efflorescence
Sheets(nfiche).Range("Z52") = aureole
Sheets(nfiche).Range("D62") = salle1_3R
Sheets(nfiche).Range("G62") = salle1_zone4
Sheets(nfiche).Range("J62") = salle1_feu
Sheets(nfiche).Range("O62") = salle1_ext
Sheets(nfiche).Range("R62") = salle1_123
Sheets(nfiche).Range("D67") = salle2_3R
Sheets(nfiche).Range("G67") = salle2_zone4
Sheets(nfiche).Range("J67") = salle2_feu
Sheets(nfiche).Range("O67") = salle2_ext
Sheets(nfiche).Range("R67") = salle2_123
Sheets(nfiche).Range("D102") = murN
Sheets(nfiche).Range("G102") = murS
Sheets(nfiche).Range("J102") = murO
Sheets(nfiche).Range("O102") = murE
Sheets(nfiche).Range("D104") = PLANCHER
Sheets(nfiche).Range("G104") = RADIER
Sheets(nfiche).Range("J104") = PLAFOND
Sheets(nfiche).Range("O104") = POUTRE
Sheets(nfiche).Range("R104") = POTEAU
Sheets(nfiche).Range("C71") = remarques


'Et le code qui mettra les photos au bon endroit
Sheets(nfiche).image1.Picture = LoadPicture(Classeurphoto & Format(bdd.Worksheets("BDD").Range("BH" & i).Value, "0000") & ".jpg")
Sheets(nfiche).Image2.Picture = LoadPicture(Classeurphoto & Format(bdd.Worksheets("BDD").Range("BI" & i).Value, "0000") & ".jpg")
Sheets(nfiche).image3.Picture = LoadPicture(Classeurphoto & Format(bdd.Worksheets("BDD").Range("BJ" & i).Value, "0000") & ".jpg")
Sheets(nfiche).image4.Picture = LoadPicture(Classeurphoto & Format(bdd.Worksheets("BDD").Range("BK" & i).Value, "0000") & ".jpg")
Sheets(nfiche).image5.Picture = LoadPicture(Classeurphoto & Format(bdd.Worksheets("BDD").Range("BL" & i).Value, "0000") & ".jpg")

Next i
End With
End Sub


Par-contre au niveau des photos, ça fonctionne mais des qu'une cellule est vide la macro me retourne "fichier non trouvé", je sais qu'il faut placer une condition if mais je ne sais pas comment la mettre de manière à ce qu'il m'ignore les cellules vide

Encore merci
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
2 févr. 2015 à 16:22
Il te suffit de ne mettre la photo que si la cellule n'est pas vide ==>> Exemple :
If bdd.Worksheets("BDD").Range("BH" & i).Value <> "" then
Sheets(nfiche).image1.Picture = LoadPicture(Classeurphoto & Format(bdd.Worksheets("BDD").Range("BH" & i).Value, "0000") & ".jpg")
end if

ou encore mieux (car tu pourrais avoir mis par erreur un n° ne correspondant à rien en cellule "BH" & i ) ===>>
ne mettre la photo que si le fichier existe ===>>
testons =  Classeurphoto & Format(bdd.Worksheets("BDD").Range("BH" & i).Value, "0000") & ".jpg"
If dir(testons) <> "" then
Sheets(nfiche).image1.Picture = LoadPicture(testons)
end if

0
niewbiesVBA
Messages postés
51
Date d'inscription
jeudi 15 janvier 2015
Statut
Membre
Dernière intervention
2 mars 2015

4 févr. 2015 à 19:49
Bonsoir ucfoutu,

Merci pour ta réponse, ça fonctionne parfaitement, je te remercie de m'avoir montrer tout ça, j'ai tout noté sur un cahier pour ne pas les oublier...

Encore merci

à bientôt...
0