XL 2019 comment passer le tableur 32 bits en 64 bits

snoopy07

XLDnaute Occasionnel
Bonsoir le forum

Le tableur s ouvre directement sur l USF en plein écran en 32 bits maintenant je suis en 64 bits
voici une capture d image de l erreur qui s affiche

Capture d’écran 2021-03-23 202635.png

Quel modification doit je faire pour mettre a jour ce code
Je vous joint mon fichier

Cordialement
Snoopy 07
 

Pièces jointes

  • Concours belote.xls
    271.5 KB · Affichages: 22

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Snoopy07, le forum

modifies tes déclarations pour signifier que l'exécution se fait en 64 bit
Private Declare PtrSafe Function
Ce paramètre optionnel ne pose en général pas de problème aux exécutions sous 32 bits
De mémoire, il y a quelques fonctions 32 qui ne passent pas ainsi sous 64 mais la plupart fonctionnent sans autre modification, il faut tester.

Bien cordialement
https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/ptrsafe-keyword
https://docs.microsoft.com/fr-fr/of...64-bit-visual-basic-for-applications-overview
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Salut, à toi de voir et appliquer : Développer avec Office 64 bits

Même Microsoft déconseillait l'installation d'une version 64 bits d'Office.

Office 32 bits est recommandé pour la plupart des utilisateurs
Nous recommandons la version 32 bits d’Office pour la plupart des utilisateurs, car elle offre une plus grande compatibilité avec la plupart des autres applications, en particulier les compléments tiers. C’est la raison pour laquelle la version 32 bits d’Office est installée par défaut, même sur les systèmes d’exploitation Windows 64 bits. Sur ces systèmes, le client Office 32 bits est pris en charge en tant qu’installation Windows-32-on-Windows-64 (WOW64). WOW64 est l’émulateur x86 qui permet l’exécution de façon transparente des applications Windows 32 bits sur les systèmes Windows 64 bits. Cela permet aux utilisateurs de continuer à utiliser les contrôles ActiveX et les compléments COM Microsoft avec la version 32 bits d’Office.
 

snoopy07

XLDnaute Occasionnel
Bonjour Staple1600 ,Yeahou ,kiki29 et le forum

merci pour vos réponses
le mot clés PtrSafe marche bien quand on le met au bon endroit
j utilise la version 64 bits car elle est installer sur le pc d origine

cordialement
Snoopy 07
 
C

Compte Supprimé 979

Guest
Salut, à toi de voir et appliquer : Développer avec Office 64 bits

Même Microsoft déconseillait l'installation d'une version 64 bits d'Office.
Bonjour le fil,

@kiki29
Pour rebondir sur ce que tu dis, c'est une très vieille préconisation qui n'est plus forcément applicable aujourd'hui 😜

Certes certains contrôles ne peuvent plus être utilisé mais on s'en passe très facilement et moins de risque de sécurité.

Je ne faisais que passer
 

patricktoulon

XLDnaute Barbatruc
bonjour
ptrsafe n'est pas suffisant
il faut changer aussi certains type long en longptr
au vu des api déclarée je suppose que ton userform est mis en plein écran
et il est mis en plein écran avec caption ou sans caption ou avec les boutons supplémentaires
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
si ca vous intéresse voici la fonction utilisant les api avec les macro4
et donc pas de déclaration des apis
c'est une function bateau compatible toute versions d'excel
userform avec les trois boutons et plein ecran
VB:
'**********************************************************************************************
'          Utilisisation des api sans déclaration avec les macro4
'                 appliquer un mode d'affichage a l'userform
'patricktoulon
'
'SW_HIDE            0 Cache la fenêtre et en active une autre.
'SW_MAXIMIZE        3 Agrandit la fenêtre.
'SW_MINIMIZE        6 Réduit la fenêtre et active la prochaine (dans l'ordre des tâches windows).
'SW_RESTORE         9 Active et affiche la fenêtre à sa taille et position initiales.
'SW_SHOW            5 Active et affiche la fenêtre.
'SW_SHOWMAXIMIZED   3 Active et agrandit la fenêtre.
'SW_SHOWMINIMIZED   2 Active et réduit la fenêtre.
'SW_SHOWNA          8 Identique à SW_SHOW sauf que la fenêtre n'est pas activée.
'**********************************************************************************************

'EXEMPLE show full screen
Private Sub UserForm_Activate()
    FullScreen 3
End Sub

Private Sub FullScreen(mode)
    Dim hwnd&
    hwnd = ExecuteExcel4Macro("CALL(""user32"",""GetActiveWindow"",""JCC"")")         'api GetActiveWindow Capture du handle de la fenetre active
    ExecuteExcel4Macro ("CALL(""user32"",""ShowWindow"",""JJJ"",""" & hwnd & """,""" & mode & """)")    ' application du mode
    ' et si tu veux les trois bouton debloque la ligne ci dessous
    'ExecuteExcel4Macro ("CALL(""user32"",""SetWindowLongA"",""JJJJJ""," & hwnd & ", " & -16 & ", " & &H94CF0080 & ")")     'api SetWindowLongA
End Sub
si vous le voulez sans caption y a qu'a demander
 

snoopy07

XLDnaute Occasionnel
bonjour patricktoulon et le forum

merci pour ta reponse

vous me dite qu il faut changer certains type long en longptr
est ce qu il faut changer tout les long en longptr qui sont dans tous les usf ou seulement ce qui sont dans Option Explicit de l usf acceuil

Pour votre code ou doit je le mettre

voici une capture de l usf qui s affiche en plein écran
Capture d’écran 2021-03-25 090656.png


le bouton annuler et toute les cases blanches s affiche quand on clic sur modifier

je vous joint mon fichier

cordialement
Snoopy07
 

Pièces jointes

  • Concours belote.xls
    300 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
bonjour
tout ce qui est variable context(hdc) ou handle(hwnd)dans les argument de fonction
sinon tu teste ma fonction bateau sans déclaration d'api
je regarderais ce soir en rentrant car je suppose qu'il faut redimensionner aussi les controls au prorata du redim plein écran (inférieur ou supérieur)
j'ai déjà donné cela plusieurs fois et meme sans api !!!
cherche avec mon pseudo même dans les ressources tu y trouvera des choses intéressantes
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Seules les variables destinées à contenir des adresses de mémoire sont à passer impérativement en LongPtr, puisque c'est devenu la taille du bus adresse du microprocesseur.
Mais peut être aussi les handle Windows renvoyés par lui suite à allocation dynamique de mémoire, car il devrait être théoriquement possible d'en demander d'avantage qu'il n'en peut être comptés sur 32 bits. Le dernier paramètre du MoveMemory, Length, aussi, bien que ce ne soit pas une adresse, car il pourrait être demandé de déplacer un volume de mémoire dont la taille en octets dépasse ce qui peut être exprimé sur 32 bits.
Je n'ai toujours pas la preuve que les handle d'objets Windows standard classiques tels que de fenêtres, d'applications ou de dispositifs graphiques le requièrent.
Une piste: pour ces handle là, utiliser le type affiché par l'exécution de cette procédure :
VB:
Sub test()
   MsgBox TypeName(Application.Hwnd)
   End Sub
Ou bien LongPtr s'il affiche "LongLong"
 
Dernière édition:

snoopy07

XLDnaute Occasionnel
bonjour patricktoulon , Dranreb et le forum

je voudrais bien essayer la fonction bateau sans déclaration d'api mais je ne sais pas ou la placer

J ai recéper ce tableur sur le net j ai réussi a faire quelque modification avec l aide de plusieurs personnes et beaucoup de recherche sur les forums
je bataille avec tous ses code vba alors quand j ai un problème je viens poser mes problèmes sur le forum pour avoir de l aide et des explications pour réussir a trouver les bon codes

merci tous pour le temps que vous me consacrer

Cordialement
Snoopy07
 

Discussions similaires

Réponses
15
Affichages
3 K

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi