Bonjour,
Je n'ai pas testé puisque je n'ai pas le code contenu dans ce fichie r.
Dans le haut du module standard où tu déclares l'API, tu la rem places
par ceci :
'Si le fichier doit exécuter les macros dans des versions
'd'Excel inférieur à Excel 10 et aussi dans Excel 10 ou
'ultérieures, on doit utiliser la compilation conditionnelle.
'Dans ce cas, observe bien le type des variables, certains
d'entre eux diffèrent selon les versions 32 ou 64 bits.
'pour plus d'information, consulte ce site internet :
'https://docs.microsoft.com/Fr-Fr/office/client-developer/shared/compatib ility-between-the-32-bit-and-64-bit-versions-of-office
'-----------------------------------------------------------------
'pour les versions plus anciennes qu'Excel 2010
#If Not VBA7 Then
'Pour les versions plus anciennes, on doit utiliser
'le "compilateur conditionnel " Win64"
'pour différencier une version Office 32 ou 64 bits
#If Not Win64 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
'-----------------------------------------------------------------
MichD
Bonjour,
Je n'ai pas testé puisque je n'ai pas le code contenu dans ce fichie r.
Dans le haut du module standard où tu déclares l'API, tu la rem places
par ceci :
'Si le fichier doit exécuter les macros dans des versions
'd'Excel inférieur à Excel 10 et aussi dans Excel 10 ou
'ultérieures, on doit utiliser la compilation conditionnelle.
'Dans ce cas, observe bien le type des variables, certains
d'entre eux diffèrent selon les versions 32 ou 64 bits.
'pour plus d'information, consulte ce site internet :
'https://docs.microsoft.com/Fr-Fr/office/client-developer/shared/compatib ility-between-the-32-bit-and-64-bit-versions-of-office
'-----------------------------------------------------------------
'pour les versions plus anciennes qu'Excel 2010
#If Not VBA7 Then
'Pour les versions plus anciennes, on doit utiliser
'le "compilateur conditionnel " Win64"
'pour différencier une version Office 32 ou 64 bits
#If Not Win64 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
'-----------------------------------------------------------------
MichD
Bonjour,
Je n'ai pas testé puisque je n'ai pas le code contenu dans ce fichie r.
Dans le haut du module standard où tu déclares l'API, tu la rem places
par ceci :
'Si le fichier doit exécuter les macros dans des versions
'd'Excel inférieur à Excel 10 et aussi dans Excel 10 ou
'ultérieures, on doit utiliser la compilation conditionnelle.
'Dans ce cas, observe bien le type des variables, certains
d'entre eux diffèrent selon les versions 32 ou 64 bits.
'pour plus d'information, consulte ce site internet :
'https://docs.microsoft.com/Fr-Fr/office/client-developer/shared/compatib ility-between-the-32-bit-and-64-bit-versions-of-office
'-----------------------------------------------------------------
'pour les versions plus anciennes qu'Excel 2010
#If Not VBA7 Then
'Pour les versions plus anciennes, on doit utiliser
'le "compilateur conditionnel " Win64"
'pour différencier une version Office 32 ou 64 bits
#If Not Win64 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
'-----------------------------------------------------------------
MichD
Bonjour,
La macro que tu as publiée n'utilise pas d'API. Par conséquent, elle
devrait fonctionner correctement sous Excel 2010 et les versions plus
récentes. D'ailleurs elle a été élaborée sous Ex cel 2016.
Tu dois avoir une autre macro qui utilise l'API de Windows dans ton
classeur.
Cela étant, si tu substitues l'API du classeur par ce que je t'ai do nné,
est-ce que cela résout ton problème?
MichD
Bonjour,
La macro que tu as publiée n'utilise pas d'API. Par conséquent, elle
devrait fonctionner correctement sous Excel 2010 et les versions plus
récentes. D'ailleurs elle a été élaborée sous Ex cel 2016.
Tu dois avoir une autre macro qui utilise l'API de Windows dans ton
classeur.
Cela étant, si tu substitues l'API du classeur par ce que je t'ai do nné,
est-ce que cela résout ton problème?
MichD
Bonjour,
La macro que tu as publiée n'utilise pas d'API. Par conséquent, elle
devrait fonctionner correctement sous Excel 2010 et les versions plus
récentes. D'ailleurs elle a été élaborée sous Ex cel 2016.
Tu dois avoir une autre macro qui utilise l'API de Windows dans ton
classeur.
Cela étant, si tu substitues l'API du classeur par ce que je t'ai do nné,
est-ce que cela résout ton problème?
MichD
Essaie ce fichier : https://www.cjoint.com/c/JJmu4gzHAMj
Si cela plante, dis-moi, quelle ligne est soulignée en jaune?
Quel est le message d'erreur?
Je ne peux pas tout tester, car ces procédures font référe nce à des
données sur ton ordinateur (fichiers) que je n'ai pas).
MichD
Essaie ce fichier : https://www.cjoint.com/c/JJmu4gzHAMj
Si cela plante, dis-moi, quelle ligne est soulignée en jaune?
Quel est le message d'erreur?
Je ne peux pas tout tester, car ces procédures font référe nce à des
données sur ton ordinateur (fichiers) que je n'ai pas).
MichD
Essaie ce fichier : https://www.cjoint.com/c/JJmu4gzHAMj
Si cela plante, dis-moi, quelle ligne est soulignée en jaune?
Quel est le message d'erreur?
Je ne peux pas tout tester, car ces procédures font référe nce à des
données sur ton ordinateur (fichiers) que je n'ai pas).
MichD
Le lundi 12 octobre 2020 à 22:59:55 UTC+2, MichD a écrit :Essaie ce fichier : https://www.cjoint.com/c/JJmu4gzHAMj
Si cela plante, dis-moi, quelle ligne est soulignée en jaune?
Quel est le message d'erreur?
Je ne peux pas tout tester, car ces procédures font référence à des
données sur ton ordinateur (fichiers) que je n'ai pas).
MichD
Bonsoir MichD,
J'ai testé le fichier mais pas d'anomalie.
Par contre le lien hyper texte souhaité lorsqu'il est bien archivé dans le bon répertoire ne fonctionne pas...
je te remets le fichier exemple que tu m'as donné...
https://www.cjoint.com/c/JJnt1vWcRYS
Dans la feuille excel parametre je definie le repertoire de stockage des fichiers techniques
Cela est repris dans ta macro automatiquement
dans la feuille BaseTech, les collègues saisissent en
B1= reference piece
C1 = nom de la pièce
D1 = type de piece
il faudrait qu'excel "scanne le repertoire d'archivage definit en parametre
et qd il trouve par exemple
b1-c1-d1.PDF, il fasse le lien en J1
b1-c1-d1.doc, il fasse le lien en I1
On peut avoir ainsi plusieurs dizaines de références voir au-dela...
Suis-je assez clair ?
Merci d'avance
Le lundi 12 octobre 2020 à 22:59:55 UTC+2, MichD a écrit :
Essaie ce fichier : https://www.cjoint.com/c/JJmu4gzHAMj
Si cela plante, dis-moi, quelle ligne est soulignée en jaune?
Quel est le message d'erreur?
Je ne peux pas tout tester, car ces procédures font référence à des
données sur ton ordinateur (fichiers) que je n'ai pas).
MichD
Bonsoir MichD,
J'ai testé le fichier mais pas d'anomalie.
Par contre le lien hyper texte souhaité lorsqu'il est bien archivé dans le bon répertoire ne fonctionne pas...
je te remets le fichier exemple que tu m'as donné...
https://www.cjoint.com/c/JJnt1vWcRYS
Dans la feuille excel parametre je definie le repertoire de stockage des fichiers techniques
Cela est repris dans ta macro automatiquement
dans la feuille BaseTech, les collègues saisissent en
B1= reference piece
C1 = nom de la pièce
D1 = type de piece
il faudrait qu'excel "scanne le repertoire d'archivage definit en parametre
et qd il trouve par exemple
b1-c1-d1.PDF, il fasse le lien en J1
b1-c1-d1.doc, il fasse le lien en I1
On peut avoir ainsi plusieurs dizaines de références voir au-dela...
Suis-je assez clair ?
Merci d'avance
Le lundi 12 octobre 2020 à 22:59:55 UTC+2, MichD a écrit :Essaie ce fichier : https://www.cjoint.com/c/JJmu4gzHAMj
Si cela plante, dis-moi, quelle ligne est soulignée en jaune?
Quel est le message d'erreur?
Je ne peux pas tout tester, car ces procédures font référence à des
données sur ton ordinateur (fichiers) que je n'ai pas).
MichD
Bonsoir MichD,
J'ai testé le fichier mais pas d'anomalie.
Par contre le lien hyper texte souhaité lorsqu'il est bien archivé dans le bon répertoire ne fonctionne pas...
je te remets le fichier exemple que tu m'as donné...
https://www.cjoint.com/c/JJnt1vWcRYS
Dans la feuille excel parametre je definie le repertoire de stockage des fichiers techniques
Cela est repris dans ta macro automatiquement
dans la feuille BaseTech, les collègues saisissent en
B1= reference piece
C1 = nom de la pièce
D1 = type de piece
il faudrait qu'excel "scanne le repertoire d'archivage definit en parametre
et qd il trouve par exemple
b1-c1-d1.PDF, il fasse le lien en J1
b1-c1-d1.doc, il fasse le lien en I1
On peut avoir ainsi plusieurs dizaines de références voir au-dela...
Suis-je assez clair ?
Merci d'avance
Bonjour,
Ta demande a changé et quelqu'un a modifié le code et ce dernie r n'est
plus fonctionnel.
A ) Copie le code suivant dans le module de la feuille "BaseTech".
B ) Si les 3 colonnes B, C, et D contiennent du texte qui correspond au
nom du fichier recherché dans le répertoire de la cellule C4 de la
feuille "Parametres" alors un lien hypertexte sera créé dans la colonne
M, sur la même ligne.
C ) Le lien hypertexte est créé seulement si les 3 cellules son t
remplies, c'est-à-dire, aucune n'est laissée vide.
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range, Chemin As String
Dim X As String, Fichier As String
Chemin = Worksheets("Parametres").Range("C4")
With Me
Set Rg = Intersect(Target, .Range("B2:D" &
.Range("B65536").End(xlUp).Row))
End With
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each C In Rg
If Application.WorksheetFunction.CountA(Range("B" &
C.Row).Resize(3)) = 3 Then
Fichier = Range("B" & C.Row) & " - " & _
Range("C" & C.Row) & " - " & _
Range("D" & C.Row) & ".pdf"
X = Dir(Chemin & Fichier)
If X <> "" Then
With Range("M" & C.Row)
.ClearContents
.Hyperlinks.Add Anchor:=Range("M" & C.Row),
Address:=Chemin & X
End With
Else
Range("M" & C.Row).ClearContents
End If
End If
Next
Application.EnableEvents = True
End If
End Sub
'---------------------------------------------------
MichD
Bonjour,
Ta demande a changé et quelqu'un a modifié le code et ce dernie r n'est
plus fonctionnel.
A ) Copie le code suivant dans le module de la feuille "BaseTech".
B ) Si les 3 colonnes B, C, et D contiennent du texte qui correspond au
nom du fichier recherché dans le répertoire de la cellule C4 de la
feuille "Parametres" alors un lien hypertexte sera créé dans la colonne
M, sur la même ligne.
C ) Le lien hypertexte est créé seulement si les 3 cellules son t
remplies, c'est-à-dire, aucune n'est laissée vide.
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range, Chemin As String
Dim X As String, Fichier As String
Chemin = Worksheets("Parametres").Range("C4")
With Me
Set Rg = Intersect(Target, .Range("B2:D" &
.Range("B65536").End(xlUp).Row))
End With
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each C In Rg
If Application.WorksheetFunction.CountA(Range("B" &
C.Row).Resize(3)) = 3 Then
Fichier = Range("B" & C.Row) & " - " & _
Range("C" & C.Row) & " - " & _
Range("D" & C.Row) & ".pdf"
X = Dir(Chemin & Fichier)
If X <> "" Then
With Range("M" & C.Row)
.ClearContents
.Hyperlinks.Add Anchor:=Range("M" & C.Row),
Address:=Chemin & X
End With
Else
Range("M" & C.Row).ClearContents
End If
End If
Next
Application.EnableEvents = True
End If
End Sub
'---------------------------------------------------
MichD
Bonjour,
Ta demande a changé et quelqu'un a modifié le code et ce dernie r n'est
plus fonctionnel.
A ) Copie le code suivant dans le module de la feuille "BaseTech".
B ) Si les 3 colonnes B, C, et D contiennent du texte qui correspond au
nom du fichier recherché dans le répertoire de la cellule C4 de la
feuille "Parametres" alors un lien hypertexte sera créé dans la colonne
M, sur la même ligne.
C ) Le lien hypertexte est créé seulement si les 3 cellules son t
remplies, c'est-à-dire, aucune n'est laissée vide.
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range, Chemin As String
Dim X As String, Fichier As String
Chemin = Worksheets("Parametres").Range("C4")
With Me
Set Rg = Intersect(Target, .Range("B2:D" &
.Range("B65536").End(xlUp).Row))
End With
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each C In Rg
If Application.WorksheetFunction.CountA(Range("B" &
C.Row).Resize(3)) = 3 Then
Fichier = Range("B" & C.Row) & " - " & _
Range("C" & C.Row) & " - " & _
Range("D" & C.Row) & ".pdf"
X = Dir(Chemin & Fichier)
If X <> "" Then
With Range("M" & C.Row)
.ClearContents
.Hyperlinks.Add Anchor:=Range("M" & C.Row),
Address:=Chemin & X
End With
Else
Range("M" & C.Row).ClearContents
End If
End If
Next
Application.EnableEvents = True
End If
End Sub
'---------------------------------------------------
MichD
effectivement cela a été modifié !
je recherche l'original et excel me fait une erreur sur l'API...
effectivement cela a été modifié !
je recherche l'original et excel me fait une erreur sur l'API...
effectivement cela a été modifié !
je recherche l'original et excel me fait une erreur sur l'API...