Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion rofou13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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+
 
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+
 
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 😀
A+
 
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 :


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

Merci de vos aides précieuses 😀
 

Pièces jointes

  • echec.jpg
    33.9 KB · Affichages: 36
  • echec.jpg
    33.9 KB · Affichages: 30
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:
Re : Charger une plage de donnée avec le même format dans un Userform

Merci beaucoup Staple1600, ça fonctionne très bien et ta formule est facilement maniable 😀

Bonne soirée ou nuit ^^
 
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…