OVH Cloud OVH Cloud

Macro Version 32bits ne fonctionne plus sous Excel 2010-2013

14 réponses
Avatar
mcl...
Bonsoir,


MichD vous m'aviez fait une macro absolument formidable qui scanner un rep=
=C3=A9rtoire pour activer ou non un lien hypertexte si l'objet =C3=A9tait t=
rouv=C3=A9.

On vient de passer sous excel 2010 et encore bient=C3=B4t sous excel 2013.

Et lorsque je lance ma feuille excel... voici le message d'erreur que j'ai.

MichD puis-je vous demander votre aide ?

La partie du code... mais si besoin je pourrais monter le fichier complet.

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Merci pour votre r=C3=A9ponse.

John97L

4 réponses

1 2
Avatar
mcl...
Le mercredi 14 octobre 2020 à 23:58:10 UTC+2, MichD a écrit  :
effectivement cela a été modifié !
je recherche l'original et excel me fait une erreur sur l'API...
Pour ta dernière question, tu n'as pas besoin de l'API de Windows.
La dernière procédure publiée fait le travail demandé . Pas besoin de
rien d'autre!
MichD

Bonsoir,
J'ai retrouvé ce que tu m'avais fait il y à fort longtemps !
Et qui fonctionnait parfaitement !
Sauf qu'en passant de excel 2003 puis maintenant 2010 et demain 2013, j'ai une erreur avec l'API.
Je reprends donc cela mais ca coince ....
https://www.cjoint.com/c/JJowaCPByDS
je repars donc de la base et j'adapterai pour mes docs techniques qui sont la suite de mes factures.
Merci d'avance
Avatar
MichD
Voici ton fichier avec l'API adaptée à toutes les versions d'Excel 1997
à 2019. J'ai seulement enregistré le fichier avec une extension .xlsm
https://www.cjoint.com/c/JJoxwgJXt2j
J'avoue que j'ai de la difficulté à suivre...la toute dernière demande
ne ressemble pas à celle qu'il y a dans le classeur!
La première fois que tu ouvres le classeur, tu as une erreur, c'est une
question de sécurité qui n'a rien à voir avec le code. Tu fermes la
fenêtre d'erreur et tu enregistres le fichier. À la prochaine ouverture,
tu ne devrais plus avoir d'erreur.
Si le code génère une erreur, indique quels sont la ligne de code qui
pose problème et le message d'erreur que tu reçois.
MichD
Avatar
MichD
Remplace la déclaration de l'API par ceci :
Testé chez moi, Windows 10 64 bits et Excel 32 bits.
Aucun problème.
'--------------------------------------------
#If Not Win64 Then
#If Not VBA7 Then
Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As LongPtr, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#End If
#Else
Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As LongPtr, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#End If
'--------------------------------------------
L'API de Windows sert seulement pour cette ligne de code dans la
procédure : Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ShellExecute 0, "open", C.Value, "", "", 0
Dans la procédure : Sub Check_Fichier(C As Range) , tu as ceci comme code :
With .Range("K" & A)
.Value = Elt & Y
.Interior.Color = vbGreen
.Style = "Followed Hyperlink"
End With
Ceci ".Style = "Followed Hyperlink" Attribue le format Hyperlink au
contenu de la cellule, mais ne crée pas un lien hypertexte. Si tu
cliques sur le texte en bleu, rien ne se passera pour sûr! Je t'ai
envoyé un fichier sur ce fil qui te donne le code quant à la manière
d'écrire une ligne de code qui crée un lien hypertexte et non un format
de cellule. Cela dépend de ce que tu désires faire.
MichD
Avatar
mcl...
Le dimanche 18 octobre 2020 à 21:34:03 UTC+2, MichD a écrit  :
Remplace la déclaration de l'API par ceci :
Testé chez moi, Windows 10 64 bits et Excel 32 bits.
Aucun problème.
'--------------------------------------------
#If Not Win64 Then
#If Not VBA7 Then
Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As LongPtr, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#End If
#Else
Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" _
(ByVal hwnd As LongPtr, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#End If
'--------------------------------------------
L'API de Windows sert seulement pour cette ligne de code dans la
procédure : Private Sub Worksheet_SelectionChange(ByVal Target As Ra nge)
ShellExecute 0, "open", C.Value, "", "", 0
Dans la procédure : Sub Check_Fichier(C As Range) , tu as ceci comme code :
With .Range("K" & A)
.Value = Elt & Y
.Interior.Color = vbGreen
.Style = "Followed Hyperlink"
End With
Ceci ".Style = "Followed Hyperlink" Attribue le format Hyperlink au
contenu de la cellule, mais ne crée pas un lien hypertexte. Si tu
cliques sur le texte en bleu, rien ne se passera pour sûr! Je t'ai
envoyé un fichier sur ce fil qui te donne le code quant à la ma nière
d'écrire une ligne de code qui crée un lien hypertexte et non u n format
de cellule. Cela dépend de ce que tu désires faire.
MichD

Merci MichD,
J'avias mis le fichier car j'ai changé le format du fichier... si tu p ouvais jeter en oeil sans vouloir abuser.
Je vais tester ton code déja.
Merci !!!
1 2