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

Autres encore un test sur excel 64 bits

patricktoulon

XLDnaute Barbatruc
bonjour a tous
confinement oblige je fait mumuse
voudriez vous bien tester ceci
toujours dans le theme de l'utilisation des api (au black) sans déclaration
j'ai repris mon partOffScreenSnapshoteur
je voudrais savoir si ca fonctionne en 64 bits

ouvrir un nouveau fichier
ajouter un userform et lui mettre le backcolor de la couleur qui vous plaira
nommer ce userform SnapForm
et c'est tout (pas de contrôles ou quoi qu'est ce ,rien)
dans le module de ce userform mettre ce code

le mode d'emploi est simple il est expliqué en commentaires
VB:
'**************************************************************************************************
'              COLLECTION  UTILISATION DES API AVEC ExecuteExcel4Macro EPISODE 23
'                         ---------------------------------------------
'                        |SnapForm pour capturer une portion de l’écran|
'                         ---------------------------------------------

'Auteur: patricktoulon sur exceldownload
'version 1.0
'---------------------------------------------
'mode d'emploi:
'pour l'appeler de n'importe quel module:
'exemple:       SnapForm.GetCapture' a pour effet d'afficher le carré transparent(rouge)

'pour le redimensionner
' avec la souris vers  les angles ou les cotés en restant appuyé avec le bouton 1 de la souris comme une fenetre classique
'le mouse pointer(cursor) vous indique quand le bord est accrochable

' pour le déplacer
'avec la souris en restant appuyé vers le centre  du carré avec le bouton 1 de la souris

' pour capturer
'click droit dessus (ouvre la boite de dialogue "enregistrer sous")
'taper le nom dans le dialogue ou laisser celui par défaut et voila c'est capturé et enregistré
'**************************************************************************************************
Option Explicit
Public Function GetCapture()
    Me.Show
End Function


'restructuration et transparence de l'userform
Private Sub UserForm_Activate()
    Dim hwnd&
    hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")")
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & hwnd & ", " & -16 & ", " & &H94080080 & ")")      'api SetWindowLongA
    ExecuteExcel4Macro ("CALL(""user32"",""DrawMenuBar"",""JJJJJJ"", " & hwnd & ")")
    'Rajoute l'attribut transparent à la fenêtre..
    ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & hwnd & ", " & -20 & ", " & &H80000 & ")")     'api SetWindowLongA
    '125 = Taux de transparence de 0 à 255
    ExecuteExcel4Macro ("CALL(""user32"",""SetLayeredWindowAttributes"",""JJJJJ"",""" & hwnd & """,""" & 0 & """,""" & 40 & """,""" & &H2 & """)")
End Sub

'prise de capture avec le click droit de la souris
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim hwnd&, fichier As Variant, shp As Shape
    If Button = 2 Then
        hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")")         'api GetActiveWindow
        ExecuteExcel4Macro ("CALL(""user32"",""SetLayeredWindowAttributes"",""JJJJJ"",""" & hwnd & """,""" & 0 & """,""" & 0 & """,""" & &H2 & """)")
        ExecuteExcel4Macro ("CALL(""user32"",""keybd_event"",""JJJJJ""," & 44 & ", " & 1 & ", " & 0 & ", " & 0 & ")")      'api SetWindowLongA
        ExecuteExcel4Macro ("CALL(""user32"",""keybd_event"",""JJJJJ""," & 44 & ", " & 1 & ", " & &H2 & ", " & 0 & ")")     'api SetWindowLongA
        ChDir (Environ("userprofile") & "\DeskTop")
        fichier = Application.GetSaveAsFilename(CurDir & "\" & "Captured_By_SnapForm", filefilter:="image Files (*.jpg;*.gif), *.jpg;*.gif", Title:="ENREGISTREMENT DE LA CAPTURE")
        If fichier = False Then Unload Me: Exit Sub
        Me.Hide: ActiveSheet.Paste
        With ActiveSheet
            Set shp = .Shapes(.Shapes.Count)
            With .ChartObjects.Add(shp.Left + 200, shp.Top, shp.Width, shp.Height)
                .Chart.Paste: .Chart.Export Filename:=fichier & ".jpg", FilterName:="jpg"
                .Delete
                shp.Delete
            End With
        End With
        Unload Me
    End If
End Sub

'deplacement et deformation sans api
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Static xx#
    Static yy#
    Dim mp As Variant, H$, Coté$
    If Y < 10 Then H = "H" Else H = "M"
    If Y > Me.InsideHeight - 10 Then H = "B"
    If X < 10 Then Coté = "G" Else Coté = "M"
    If X > Me.InsideWidth - 10 Then Coté = "D"
    mp = H & Coté
    mp = Switch(mp = "HG", 8, mp = "BD", 8, mp = "HD", 6, mp = "BG", 6, mp = "HM", 7, mp = "BM", 7, mp = "MM", 0, mp = "MG", 9, mp = "MD", 9)
    If Me.MousePointer <> mp Then Me.MousePointer = mp
    If Button = 1 Then
        xx = IIf(xx = 0, X, xx): yy = IIf(yy = 0, Y, yy)
        Select Case H & Coté
        Case "MM": Me.Move Me.Left + (X - xx), Me.Top + (Y - yy): Exit Sub
        Case "HG": Me.Width = Me.Width - (X - xx): Me.Left = Me.Left + (X - xx): Me.Height = Me.Height - (Y - yy): Me.Top = Me.Top + (Y - yy)
        Case "MG": Me.Width = Me.Width - (X - xx): Me.Left = Me.Left + (X - xx)
        Case "BG": Me.Width = Me.Width - (X - xx): Me.Left = Me.Left + (X - xx): Me.Height = Y + 5
        Case "HD": Me.Width = X + 5: Me.Height = Me.Height - Y + 5: Me.Top = Me.Top + (Y - 5)
        Case "MD": Me.Width = X + 5
        Case "BD": Me.Width = X + 5: Me.Height = Y + 5
        Case "HM": Me.Height = (Me.Height - Y): Me.Top = Me.Top + Y
        Case "BM": Me.Height = Y + 5
        End Select
    Else
        xx = 0: yy = 0
    End If
End Sub

merci d'avance pour les retours
 

Staple1600

XLDnaute Barbatruc
Re

Je parlais de celle-ci
Qui donne une information véridique donc valable.

Pour le reste, les gens sensés utilisent Excel comme un tableur, pas comme un succédané de logiciel de programmation
Et parmi les gens sensés, amateur d'Excel, aucun n'a installé Excel en 64 bits.
 

patricktoulon

XLDnaute Barbatruc
c'est pas grave c'est un peu moi quand je monte en tension j'ai du mal a redescendre
et c'est le fait qu'a chaque fois que je fait une demande ça part en débat dans un autre sens qui n'a rien a voir avec la question

j'ai rien contre a prolonger une discussion avec des débats qui ont plus ou moins des sens MAIS SEULEMENT !!!partir du moment ou la question a été résolue pas avant
le boulot d'abords , l'amusement après
 

Staple1600

XLDnaute Barbatruc
Re

•>patricktoulon
Installe Excel en 64 bits, et tu pourras tester à loisir sans les désagréments d'une discussion d'une quarantaine de posts (who's care! on est confiné)
Et sans croiser des gens qui...me gonfle tout simplement ... et .... pas foutu de lire les commentaires.

Et moi, cela m'évitera de voir mon pseudo écorché et de lire des questions que tu te poses alors que tu as déjà la réponse ailleurs
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à Paryktouslon, Cris34, macel64bit, arrrrrghthour793768949 et stapple1664,

Allez Allez! On se calme, on respire profondément, on met sa paire de chaussons du dimanche et on va faire un petit tour dehors au soleil (avec son attestation dûment complétée, datée et signée). Comme tous, nous respectons les geste barrières et la distanciation; on n'en viendra donc pas aux mains. On se laisse bercer par le charmant gazouillis des petits passereaux, on hume la tendre odeur de l'herbe printanière, verte et fraiche. A propos de zosiaux, je voudrai prévenir ce p't..n de pigeon mâle qui se perche tous les matins sur le toit à côté de ma fenêtre et qui, dès les prémices de l'aurore se permet d'appeler sa dulcinée (ou maintenir à distance les possibles amants) avec force roucoulements stridents et dissonants, que ses jours sont comptés. Alibobo m'ayant livré la toute dernière Kalachnikov made in Tchéchénie, dès demain je passe à l'offensive. M'en vais le déplumer ce descendant dégénéré des derniers dinosaure à plumes.
Je disais donc: Restons calmes et courtois. . Une fois cette petite affaire de pigeon réglée, il me restera quelques munitions pour mettre fin avec tact et diplomatie (mais avec fermeté et violence limitée au strict nécessaire) à tous les autres petits conflits que je croiserai. N'est-il pas ?
Je vous souhaite une bonne fin de journée

nota : concernant la question, vous savez celle du début, je ne serai d'aucun secours ne disposant que d'Excel 10 32bits.
 
Dernière édition:

Discussions similaires

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