VBA userform renommer photo

Résolu/Fermé
kevina - Modifié par kevina le 29/06/2015 à 04:13
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 3 juil. 2015 à 08:09
Bonjour,

Je réalise un programme VBA dans le cadre de mon travail pour gérer des images sur une tablette portable. Je m'excuse d'avance mais je ne pourrai pas communiquer le programme entier. Voilà donc la partie concernant mon problème que je vais essayer de vous expliquer :

Sur un userform un bouton permet d'activer l'appareil photo de la tablette afin de prendre des photos. Les photos sont directement rapatriées vers :
C:\Users\...\Addons\take_picture". Ceci fonctionne.

Ensuite je veux renommer la dernière photo prise en fonction des caractères contenus dans une ligne du fichier excel.

J'arrive à détecter la dernière photo prise grâce à sa date. Mais ensuite je bloque pour renommer la photo, excel me dit que le chemin n'est pas bon ... Pouvez vous m'aider à identifier l'erreur ?

Je vous remercie.
Bonne journée,
Kévina




'Renommer la photo (PROBLEME)
Dim Last_way As String, New_way As String
Dim GestionFichier As New Scripting.FileSystemObject

I = Range("Q3")
PictureName = Range("F" & I)
Range("F" & I).Value = PictureName

Last_way = myDir & strFilename & t
New_way = PictureDir & PictureName & t

Name Last_way As New_way

End Sub
A voir également:

3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
29 juin 2015 à 09:13
Bonjour,

comme ceci:

Dim nouveaunom As String
Dim chemin, chemindestination As String
chemin = "C:\Users\....\Documents\azerty.jpg" ' a adapter
chemindestination = "C:\Users\....\Documents\" ' a adapter
nouveaunom = Range("Q3").Value
Name chemin As chemindestination & nouveaunom & ".jpg"

0
Bonjour, merci beaucoup ca fonctionne à merveille !
0
Bonjour Le pivert,
Après plusieurs tests je remarque qu'il y a encore un problème. En effet excel n'attend pas que les photos soient prises par l'utilisateur pour les déplacer. Je pense mettre une condition du genre : "pour continuer attend que utilisateur ferme l'application de l'appareil photo de la tablette".
je pensais m'inspirer de ce genre de commande :
Do While CurrentProject.AllForms(logiciel).Isloaded: DoEvents: Loop

As tu une idée pour l'adapter à un logiciel externe ?
Merci,
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
1 juil. 2015 à 08:26
Le plus simple c'est de mettre un message avant la macro de renommage, demandant à l'utilisateur de fermer l'application.
0
Bonjour,

Merci beaucoup pour votre aide ,j'ai essayé mais il restait des bugs des fois. Du coup j'ai trouvé la solution de diviser mon code en deux, c'est à dire la prise de photo s'effectue lorsque l'utilisateur clique sur le bouton "prendre une photo", et la dernière photo s'archive lorsqu'il clique sur "Next". Ca fonctionne bien mais le soucis vient ensuite, le bouton Next servait déjà pour changer d'userform et vérifier que l'utilisateur est bien écrit un commentaire (*). Maintenant lorsque que je clique sur Next, l'userform d'après ne répond plus du tout, je ne peux rien faire, ni cliquer ni rentrer des valeurs dans l'userform suivant... :/ J'ai l'erreur 91. Pensez vous qu'elle puisse venir de ma dernière manipulation?
Je vous remercie,
Kevina



BOUTON "prendre une photo" :
Private Sub CommandButton2_Click()
Dim picture_number As Integer
Dim FileSys As FileSystemObject
Dim objFile As Object
'Dim FileSys As Object
Dim myFolder As Folder
Dim strFilename As String
Dim t As String
Dim dteFile As Date
Dim picture As String
Dim newname As String
Dim newnamedate As String
Dim dDate As Date

Dim myDir, myDirdestination, Dir As String
I = Range("Q3")

'set path for files - change for your folder
myDir = "C:\Users\...l\Addons\camera\" 'using tablet
myDirdestination = "C:\Users\..\Addons\new_picture" 'using tablet


'to open Getac Camera (you need to click two times on button)
'Shell "C:\Program Files (x86)\Getac\G-Camera\GetacCamera3.exe", vbMaximizedFocuse 'using tablet


MsgBox "Please close the application"
'to find the last picture taking click on Next button
End Sub


BOUTON NEXT :
Private Sub CommandButton1_Click()

Dim alarm_num As Integer
Dim line As Integer
Dim k As Integer
Dim picture_number As Integer
Dim FileSys As FileSystemObject
Dim objFile As Object
Dim FileSys As Object
Dim myFolder As Folder
Dim strFilename As String
Dim t As String
Dim dteFile As Date
Dim picture As String
Dim newname As String
Dim newnamedate As String
Dim dDate As Date
Dim myDir, myDirdestination, Dir As String
I = Range("Q3")


'set path for files - change for your folder
'Dir = "C:\Users\...\Addons\camera\" 'using tablet
'myDirdestination = "C:\Users\...\Addons\new_picture\" 'using tablet

'To find the last picture taking:
' set up filesys objects
Set FileSys = New FileSystemObject
Set myFolder = FileSys.GetFolder(myDir)

'loop through each file and get date last modified. If largest date then store Filename
dteFile = DateSerial(1900, 1, 1)
For Each objFile In myFolder.Files
If objFile.DateLastModified > dteFile Then
dteFile = objFile.DateLastModified
' strFilename = objFile.Name
End If
Next objFile

'move picture
patrol = ActiveWorkbook.Name
newname = patrol & Range("Q3").Value
newnamedate = Day(Date) & "/" & Month(Date) & "/" & Year(Date) & Hour(Date) & Minute(Date) & Second(Date) & newname
jour = Day(Date)
mois = Month(Date)
annee = Year(Date)
newnamedate = jour & mois & annee & newname


newname = Range("E" & I).Value
Name myDir & strFilename As myDirdestination & newname & ".jpg"
Range("H" & I).Value = newnamedate

'Ancien programme non modifié (*)
If TextBox1.Value = "" Then
MsgBox "Please, add a comment"

Else

Sheets("sheet1").Select


floor_name = name_usf.Caption

Range("J" & step).Value = Alarm_not_ok.TextBox1

Unload Alarm_not_ok

End If

End Sub
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
3 juil. 2015 à 08:09
Avec ceci tu fermes l'userForm:

Unload Alarm_not_ok 

0