Charger une plage de donnée avec le même format dans un Userform

rofou13

XLDnaute Nouveau
Bonjour,

Mon objectif est que l'utilisateur rentre des informations sur l'userform qui permettront de calculer un tableau et qu'ensuite que le tableau s'affiche sur l'userform en cliquant sur un bouton.

Dans mon fichier, je souhaiterai charger sur l'userform 2, page "tableau des résultats" le tableau situé sur la plage de donnée "C10:I32" de la feuille "comptant".

J'ai essayé plusieurs code mais étant novice en vba je m'embrouille facilement.

Merci de vos futures réponses et je reste à votre disposition pour plus de renseignement :)
 

Pièces jointes

  • TABLEAU DE RENTABILITE par romain.xlsm
    210 KB · Affichages: 24

Regueiro

XLDnaute Impliqué
Re : Charger une plage de donnée avec le même format dans un Userform

Bonsoir le Forum, Rofou13
Dans le fichier ci-joint :
j'ai créer une nouvelle feuille ("DATA")
Insérer une image avec l'appareil photos, cette image est créer automatiquement avec un lien
=comptant!C10:I32

Ensuite dans ton code de l'UserForm2 :
Code:
Dim Img As Shape
Private Sub UserForm_Initialize()
    Me.Image1.Visible = False
    On Error Resume Next
    Set Img = Sheets("DATA").Shapes("Picture " & 1)
      On Error GoTo 0
          If Not Img Is Nothing Then
              Img.CopyPicture xlScreen, xlPicture
      Set Me("Image" & 1).Picture = PastePicture
          End If
End Sub

Private Sub CommandButton2_Click()
Me.Image1.Visible = True
End Sub
Avec un module : modPastePicture

Voilà.
Regarde si cela te convient, on peut par la suite arranger le code
A+
 

Pièces jointes

  • XLD TABLEAU DE RENTABILITE par romain.xlsm
    228 KB · Affichages: 27

rofou13

XLDnaute Nouveau
Re : Charger une plage de donnée avec le même format dans un Userform

Bonsoir Regueiro,

Tout d'abord merci de ta réponse. Malheureusement j'ai une erreur de compilation du module modPastePicture. Le message d'erreur indique que le code doit être mis à jour car le système est en 64 bits... J'ai essayé de changer le 32 en 64 mais ce n'est pas suffisant ^^

La compilation plante au niveau des "private declare function". Tu saurais écrire le code sous un système 64 bits ou connais tu la démarche à faire ?

Sinon j'ai regardé le code et si j'ai bien compris, je pense que cela correspond parfaitement à ce que je recherche :)
Il y a juste ce problème de compilation. Je reste à ta disposition pour tout détails :)
A+
 
C

Compte Supprimé 979

Guest
Re : Charger une plage de donnée avec le même format dans un Userform

Bonsoir,

Essaye en mettant "PtrSafe" dans les déclarations d'API
Code:
Private Declare PtrSafe Function IsClipboardFormatAvailable& Lib "user32" (ByVal wFormat&)
Private Declare PtrSafe Function OpenClipboard& Lib "user32" (ByVal hwnd&)
Private Declare PtrSafe Function GetClipboardData& Lib "user32" (ByVal wFormat%)
Private Declare PtrSafe Function CloseClipboard& Lib "user32" ()
Private Declare PtrSafe Function OleCreatePictureIndirect& Lib "olepro32.dll" (PicDesc As uPicDesc, RefIID As GUID, ByVal fPictureOwnsHandle&, IPic As IPicture)
Private Declare PtrSafe Function CopyEnhMetaFile& Lib "gdi32" Alias "CopyEnhMetaFileA" (ByVal hemfSrc&, ByVal lpszFile$)
Private Declare PtrSafe Function CopyImage& Lib "user32" (ByVal handle&, ByVal un1&, ByVal n1&, ByVal n2&, ByVal un2&)

A+
 

rofou13

XLDnaute Nouveau
Re : Charger une plage de donnée avec le même format dans un Userform

Rebonsoir,

j'ai cherché un peu et j'ai trouvé qu'en rajoutant Ptrsafe entre le "declare" et le "function" la compilation fonctionne. Par contre il ne trouve pas le "olepro32.dll" (ligne 32 du module) :(

Si tu as une idée je suis preneur :D
A+
 

rofou13

XLDnaute Nouveau
Re : Charger une plage de donnée avec le même format dans un Userform

Bonjour à tous :)

Je suis allé voir dans C:\WINDOWS\SysWow64 et le dll y est bien. Par contre j'ai toujours le bug suivant :
echec.jpg

Est ce que cela veux dire que je dois réinstaller Microsoft office :( :( :( ?

Merci de vos aides précieuses :D
 

Pièces jointes

  • echec.jpg
    echec.jpg
    33.9 KB · Affichages: 31
  • echec.jpg
    echec.jpg
    33.9 KB · Affichages: 25

Staple1600

XLDnaute Barbatruc
Re : Charger une plage de donnée avec le même format dans un Userform

Bonsoir à tous


Tu peux aussi utiliser cette alternative (basée sur un code de JB)
(qui n'utilise pas le module de Stephen Bullen)
Je viens de tester sur Excel 2013 et cela fonctionne.
Code:
Private Sub UserForm_Initialize()
  With Sheets("comptant")
    .[C10:I32].CopyPicture
    .Paste Destination:=.Range("A1")
    Set s = .Shapes(.Shapes.Count)
    s.CopyPicture
    .ChartObjects.Add(0, 0, s.Width, s.Height).Chart.Paste
    .ChartObjects(1).Chart.Export Filename:="tableau.jpg", FilterName:="jpg"
    .Shapes(.Shapes.Count).Delete
    .Shapes(.Shapes.Count).Delete
   End With
   Me.Image1.Picture = LoadPicture("tableau.jpg")
Kill "tableau.jpg"
End Sub
NB: Au préalable, insérer un contrôle Image dans l'userform
 
Dernière édition:

Regueiro

XLDnaute Impliqué
Re : Charger une plage de donnée avec le même format dans un Userform

Bonjour à Tous
Testé avec 64 bits OK
Remplacer ce code avec le code contenant oleaut32.dll:
Code:
'ICI PROBLEME AVEC 64 BITS oleaut32.dll
'Private Declare PtrSafe Function OleCreatePictureIndirect& Lib "olepro32.dll" (PicDesc As uPicDesc, RefIID As GUID, ByVal fPictureOwnsHandle&, IPic As IPicture)
Private Declare PtrSafe Function OleCreatePictureIndirect& Lib "oleaut32.dll" (PicDesc As uPicDesc, RefIID As GUID, ByVal fPictureOwnsHandle&, IPic As IPicture)
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 308
Messages
2 087 103
Membres
103 469
dernier inscrit
Thibz