Stockage adresse image
Bonjour,
je n'ai pas réussi à trouver mon bonheur malgré quelques recherches.
Merci d'avance si vous pouvez m'aider sur le problème suivant : je souhaiterais créer un bouton commande qui ouvre une inputBox pour renseigner un chiffre puis après clic sur "OK" celui ouvre le répertoire par défaut et jusque là j'y parviens
Public Sub ajout_photo()
Dim dervaleur_a As Integer
dervaleur_a = Range("a65000").End(xlUp).Rows
Do
num_article = InputBox("Indiquer le numéro de l'article", "Quel article?")
If num_article = "" Then
Exit Sub
Else
Application.Dialogs(xlDialogOpen).Show
End If
Exit Sub
Loop While num_article = "" Or num_article > dervaleur_a
End SubL'idée est ensuite d'aller chercher une image sur le serveur. Je ne veux pas que l'image s'ouvre mais que son adresse soit stockée dans une cellule que je définis (ça sera la 1ere cellule vide en colonne B
Mais comment on fait ça ??
Merci beaucoup.
Oliv
bonjour,
voici une manière de faire.
Public Sub ajout_photo()
Dim dervaleur_a As Integer
dervaleur_a = Range("a65000").End(xlUp).Row
Do
num_article = InputBox("Indiquer le numéro de l'article", "Quel article?")
If num_article = "" Then
Exit Sub
Else
With Application.FileDialog(msoFileDialogOpen) 'choisir un fichier
.AllowMultiSelect = False
If .Show = -1 Then
dervaleur_a = dervaleur_a + 1 ' la premiere ligne libre
Cells(dervaleur_a, 2) = .SelectedItems(1) 'on copie le nom du fichier
End If
End With
End If
Exit Sub
Loop While num_article = "" Or num_article > dervaleur_a
End Subje n'ai pas compris ce que tu voulais faire avec num_article ou ce à quoi il devait servir .
Merci pour ta réponse. Je vais tester.
"num_article" permet de renseigner un numéro d'article qui vient alimenter la colonne A (d'où dervaleur_a).
Pour le chemin de l'image il faut donc un dervaleur_b.
L'objectif finale est de dire, "je souhaite affecter tel image à tel article". Je renseigne donc mon article puis l'image qui va avec.
Oliv
re-bonjour,
je te propose dès lors le code suivant :
Public Sub ajout_photo()
Dim dervaleur_a As Integer
dervaleur_a = Range("a65000").End(xlUp).Row
Do
num_article = InputBox("Indiquer le numéro de l'article", "Quel article?")
If num_article = "" Then
Exit Sub 'on sort de la boucle si num_article=""
Else
With Application.FileDialog(msoFileDialogOpen) 'choisir un fichier
.AllowMultiSelect = False
If .Show = -1 Then
dervaleur_a = dervaleur_a + 1 ' la premiere ligne libre
Cells(dervaleur_a, 1) = num_article 'on copie le numéro d'article
Cells(dervaleur_a, 2) = .SelectedItems(1) 'on copie le nom du fichier
End If
End With
End If
Loop
End SubAlors, on est pas loin. adapté à mon fichier le code ressemble à cela :
Public Sub ajout_photo()
Dim dervaleur_a As Integer
dervaleur_a = Range("a65000").End(xlUp).Rows
Do
num_article = InputBox("Indiquer le numéro de l'article", "Quel article?")
If num_article = "" Then
Exit Sub
Else
With Application.FileDialog(msoFileDialogOpen) 'choisir un fichier
.AllowMultiSelect = False
If .Show = -1 Then
dervaleur_a = dervaleur_a - 1 ' la premiere ligne libre
Sheets("photo_doc").Cells(dervaleur_a, 1) = num_article
Sheets("photo_doc").Cells(dervaleur_a, 2) = .SelectedItems(1) 'on copie le nom du fichier
End If
End With
End If
Exit Sub
Loop While num_article = "" Or num_article > dervaleur
End SubCela colle bien le numéro d'article ainsi que le chemin de l'image mais 2 lignes en dessous de la dernière vide... et je comprends pas trop pourquoi.
Par ailleurs je ne comprends pas ces lignes de code :
.AllowMultiSelect = False
If .Show = -1 Then
dervaleur_a = dervaleur_a - 1 ' la premiere ligne librepourquoi - 1 ?
Merci encore à toi.
Oliv
Au temps pour moi, le "-1" c'est moi qui l'ai ajouté justement pour arriver à la 1ère cellule vide. Désolé.
C'est donc le "+1" je ne comprends pas
rebonjour,
cette instruction
dervaleur_a = Range("a65000").End(xlUp).Rowremarque qu'il n'y a pas de s à la fin de row, te donne le numéro de la dernière ligne utilisée dans la colonne A. la première ligne libre est donc la suivante d'où le +1.
Oui effectivement je n'avais pas remarqué. Merci de cette explication.
Cela ne résolve pas mon souci par contre, ce n'est pas la 1ère ligne vide qui se rempli...
De plus si je fais plusieurs fois la manip, cela remplace le copier-coller précédent alors que je souhaiterais que cela se mette sur la ligne suivante.
Merci quand même
Du coup, une autre manière : comment puis-je faire pour déplacer le fichier sélectionné dans un répertoire choisi ?
Oliv
re-bonjour,
voici la macro telle qu'il faut l'adapter pour ton fichier.
Public Sub ajout_photo()
Dim dervaleur_a As Integer
Set ws = Sheets("photo_doc")
dervaleur_a = ws.Range("a65000").End(xlUp).Row
Do
num_article = InputBox("Indiquer le numéro de l'article", "Quel article?")
If num_article = "" Then
Exit Sub 'on sort de la boucle si num_article=""
Else
With Application.FileDialog(msoFileDialogOpen) 'choisir un fichier
.AllowMultiSelect = False
If .Show = -1 Then
dervaleur_a = dervaleur_a + 1 ' la premiere ligne libre
ws.Cells(dervaleur_a, 1) = num_article 'on copie le numéro d'article
ws.Cells(dervaleur_a, 2) = .SelectedItems(1) 'on copie le nom du fichier
End If
End With
End If
Loop
End SubBravo ça fonctionne. Je te remercie beaucoup.
Donc juste pour finir, si je voulais en fin de boucle simplement copier cette image sélectionnée vers un répertoire que je défini, je fais comment ?
Merci.
oliv
bonsoir,
avec la copie de fichier
Public Sub ajout_photo()
Dim dervaleur_a As Integer
nouveauchemin = "d:\destination" 'à adapter ne pas mettre de \ final
Set ws = Sheets("photo_doc")
dervaleur_a = ws.Range("a65000").End(xlUp).Row
Do
num_article = InputBox("Indiquer le numéro de l'article", "Quel article?")
If num_article = "" Then
Exit Sub 'on sort de la boucle si num_article=""
Else
With Application.FileDialog(msoFileDialogOpen) 'choisir un fichier
.AllowMultiSelect = False
If .Show = -1 Then
dervaleur_a = dervaleur_a + 1 ' la premiere ligne libre
ws.Cells(dervaleur_a, 1) = num_article 'on copie le numéro d'article
ws.Cells(dervaleur_a, 2) = .SelectedItems(1) 'on copie le nom du fichier
fn = Mid(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
FileCopy .SelectedItems(1), nouveauchemin & fn
End If
End With
End If
Loop
End SubBonjour,
on y est! Super, merci encore, ça fonctionne au poil.
Oliv