[Déplace VB6 -> VBA]Gestion d'image entre VB et Excel

tomtom13100 Messages postés 6 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 21 octobre 2011 - 4 août 2011 à 11:34
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 4 août 2011 à 17:39
Bonjour

Ma question est la suivante : je réalise une petite application sur excel avec vb. j'ai plusieurs useform dont un qui me permet de gérer des images. Le fonctionnement est le suivant : je demande à l'utilisateur d'aller chercher une image à l'aide d'un bouton de commande, j'enregistre cette image sur une page excell dans une plage definie.
Par contre, je voudrais faire afficher automatiquement cette image dans une "picture" VB définie pour que l'utilisateur puisse visualiser l'image choisi avant de passer aux useform suivants.

Pouvez vous m'aider ????

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 août 2011 à 12:01
Bonjour,

- es-tu certain de piloter Excel depuis VB6 et de ne pas être tout au long en VBA/Excel ?
- peux-tu nous montrer où tu en es (ton code tel qu'il est) ?




____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
tomtom13100 Messages postés 6 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 21 octobre 2011
4 août 2011 à 13:37
exact, je me suis mal expliqué je suis en VBA/Excel effectivement.
voici mes lignes de codes pour enregistrer l'image dans excel :

Private Sub inser_image_Click()

Dim Emplacement As Range


If Application.Dialogs(xlDialogInsertPicture).Show Then
'Définit l'emplacement de l'image
For n = 1 To 5

Sheets("sas" & n).Select
If cells(2, 2).Value = 0 Then
End If
a = n
Exit For
Next n
cells(53, 1).Value = 1
Set Emplacement = Range("B55:G77")

Set Img = ActiveSheet.DrawingObjects(ActiveSheet.Shapes.Count)

With Img.ShapeRange
.LockAspectRatio = msoFalse
.Left = Emplacement.Left
.Top = Emplacement.Top
.Height = Emplacement.Height
.Width = Emplacement.Width
End With

Else
MsgBox "Insertion d'image interrompue.",vbExclamation, "Erreur"
End If

l'idée serait de "copier" l'image que se trouve dans la plage B55:G77 pour la faire apparaitre dans un cadre picture nommé"image1" automatiquement...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 août 2011 à 14:40
Bon...
Si tu parcours un peu mes autres interventions sur ce forum, tu vas vite te rendre compte de ce 1) que je subordonne en général mon aide à l'assurance de ce que le demandeur sait ce qu'il fait.

Ce qui n'est pas du tout le cas lorsque je vois écrit ceci :
 For n = 1 To 5

     Sheets("Feuil1").Select
     If Cells(2, 2).Value = 0 Then
     End If
     a = n
     Exit For
   Next n
*
qui est pour le moins très "surprenant", d'une part, et ne sert rigoureusement à rien, d'autre part !
A moins que ne m'ait échappé quelque-chose d'extrêmement "mystérieux" que tu voudras bien m'exposer en détail !
Je n'accepterai personnellement de ne me pencher sur le reste qu'après cette explication.



____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
tomtom13100 Messages postés 6 Date d'inscription jeudi 4 août 2011 Statut Membre Dernière intervention 21 octobre 2011
4 août 2011 à 16:12
normal je n'ai pas tout expliqué... Donc, en fait je fait une application permettant d'entrer et de suivre des mesures faites sur des appareils.

Comme chaque appareils a des caractéristiques différentes, je fixe une page excel par appareil.

Dans mon application au début je vais sélectionner une page vierge pour ne pas écraser des données déjà existantes et utilisées pour faire du suivi. Je vais donc chercher ma page vierge en testant une valeur (if cells(x,x)=0 then) dans une case de chaque feuille que je selectionne en faisant une boucle (sheets("sas" &n").select). Est ce plus clair ?
Comme je peux entrer 5 appareils, je vais chercher la bonne feuille par ce principe,certe un peu sauvage mais pas très compliqué à faire marcher.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 août 2011 à 16:34
Tu n'aurais alors pas dû montrer ce bout de code (surtout tel qu'il est) ici !
Mais quand même : à ce propos : ta méthode de vérification de virginité est plutôt hasardeyuse !
Voici, en passant comment faire de manière moins sujette à surprises en tous genre :

Dim libre As Worksheet
 For i = 1 To Worksheets.Count
   If Worksheets(i).UsedRange.SpecialCells(xlCellTypeLastCell) = "" Then
     Set libre = Worksheets(i)
     Exit For
   End If
 Next
 MsgBox libre.Name & " d'index " & libre.Index


Pour le reste : abandonne l'utilisation de Application.Dialogs(xlDialogInsertPicture).Show, non adapté à ce que tu veux faire car ne te permet pas d'extrraire le chemin de l'image.
Opte pour l'utilisation de GetOpenFileName et tu pourras alors faire ce que tu veux faire.
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 août 2011 à 17:39
Et même mon code serait un peu hasardeux.
Voici ce qui est parfait :
Dim libre As Worksheet
 For i = 1 To Worksheets.Count
   If WorksheetFunction.CountA(Worksheets(i).UsedRange) = 0 Then
     Set libre = Worksheets(i)
     Exit For
   End If
 Next
 If Not libre Is Nothing Then
   MsgBox "est libre " & libre.Name & " d'index " & libre.Index
 Else
   MsgBox "aucune de libre"
 End If


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
0
Rejoignez-nous