XL 2019 Passage de 2013 pro à 2019 pro, Pb avec formule VBA, liens hypertexte

ANTONY34200

XLDnaute Occasionnel
Bonjour à tout le forum.
J'ai un soucis depuis que je suis passé sur excel 2019 pro.
Avec 2013 pro, j'ai créée avec l'aide du forum une application de planning.
Sous 2013 pro, tout fonctionne parfaitement.
Sous 2019 pro, j'ai un soucis avec un code vba, dans le module "fonction_et_sous programme".
losrque que je nagigue entre les onglets et que je reviens sur l'onglet "G" j'ai un débogage sur cette ligne de code
VB:
' Insertion lien hypertexte
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
        SubAddress:=Cible, TextToDisplay:=NouveauNom
je ne comprends pas pourquoi, vue que sous 2013 tout allait bien. Le code ci-dessus est un extrait du code suivant :
Code:
Sub CumulTempsMensuel()
t0 = Timer
' Accélération par inhib events
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
' Effacement liste agents et temps
Sheets("G").Range("B6:C100").ClearContents
' Construction liste agents
Nagents = Application.WorksheetFunction.CountA(Sheets("Parametre").Range("H4:H100"))
For N = 1 To Nagents
    NouveauNom = Sheets("Parametre").Range("H" & 3 + N)
    IndexAGT = Sheets("Parametre").Range("J" & 3 + N)
    Sheets("G").Range("B" & 5 + N).Select
    Cible = "'" & "AGT " & IndexAGT & "'!$D$5"
    ' Insertion lien hypertexte
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
        SubAddress:=Cible, TextToDisplay:=NouveauNom
Next N
' transfert tableau planning dans array
tablo = Range("D6:QL36")
' Calcul des temps par agent
For Agent = 1 To Nagents                                            ' Pour tous les agents
    NomAgent = LCase(Cells(Agent + 5, 2))
    Durée = 0
    For Jour = 1 To 31                                              ' Pour tous les jours
        For Sites = 1 To 90                                         ' Pour tous les sites
            Nom = tablo(Jour, 5 * Sites - 3)                        ' Colonne du nom
            If LCase(Nom) = NomAgent Then                           ' Si c'est l'agent concerné
                Tdeb = tablo(Jour, 5 * Sites - 3 + 2)               ' Recup temps de début
                Tfin = tablo(Jour, 5 * Sites - 3 + 4)               ' Recup temps de fin
                If Tfin <= Tdeb Then Tfin = Tfin + 1                 ' Si fin < début on rajoute 24H
                Durée = Durée + Tfin - Tdeb                         ' Ajout du temps à la durée
            End If
        Next Sites
    Next Jour
    If Durée * 24 > 0 Then
        Cells(Agent + 5, 3) = Durée * 24                            ' on affiche que s'il y a un temps
    End If
Next Agent
' Retour events
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.StatusBar = "Temps de calcul page G : " & Round(1000 * (Timer - t0), 0) & "ms"
End Sub

Si quelqu'un pouvait m'aider, ou avoir un début de piste pour modifier ce code ...
Je vous joint mon fichier.
Merci d'avance, a tous ceux qui liront mon post, et qui pourront m'aider.
 

Pièces jointes

  • Planning Test.xlsb
    986.7 KB · Affichages: 3
Solution
Bonjour le Forum, Sylvanu,
j'ai résolu le problème !!!
c'était la protection de la feuille G qui empêchait le code du liens hypertexte de faire son travail !!!
donc dans le bouton rafraichir j'ai fait ça :
VB:
Sub BoutonRafraichir()
Sheets("G").Unprotect
' Sur appui bouton dans General
    FlagTri = 1         ' Autorise le tri ( qui est long )
    CumulTempsMensuel
    FlagTri = 0         ' Interdit le tri lorsqu'on selectionne la page General (gain de temps)
    Reperer_Doublon
    Sheets("G").Unprotect
    Sheets("G").Range("30:40").EntireRow.Hidden = False                       ' remettre visible les lignes masquées
    ' Ligne 32 corrsepond au 27 du mois ( cas défavorable de février )
    For i = 32 To 37
        If...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Essayez ça pour voir. Mais je n'aime vraiment pas ça, mais c'est uniquement pour essayer.
J'ai supposer que tous les agents s'appelaient AGT x, et non par leur nom, sinon ça ne marche pas.
Dans CumulTempsMensuel, j'ai mis le lien en commentaire et mis :
VB:
For N = 1 To Nagents
    NouveauNom = Sheets("Parametre").Range("H" & 3 + N)
    IndexAGT = Sheets("Parametre").Range("J" & 3 + N)
    Sheets("G").Range("B" & 5 + N) = "AGT " & IndexAGT
    
    'Cible = "'" & "AGT " & IndexAGT & "'!$D$5"
    ' Insertion lien hypertexte
    'ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
        SubAddress:=Cible, TextToDisplay:=NouveauNom
Next N
Et dans la feuille G, j'ai mis :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo FinLstAGT
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [B6:B96]) Is Nothing Then
        If Target = "" Then Exit Sub
        NomFeuille = Target: [B1].Select
        Sheets(NomFeuille).Select
    End If
FinLstAGT:
End Sub
Mais j'ai horreur de ce genre de bidouille. On ne sait pas ce qu'on fait.
Donc tout au plus, si ça marche, cela voudra dire que c'est bien le lien ( syntaxe ou autre ) qui pose soucis.
C'est ce problème qu'il faut résoudre.
 

Pièces jointes

  • Planning Test (Bidouille).xlsb
    967.6 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un point intéressant dans la réponse de Bard ( ChaptGPT de Google ) à :
Les liens hypertextes écrits avec une macro VBA d'Excel 2013 ne fonctionnent plus avec Excel 2019. Quel peut être le problème ?
est :
Il y a plusieurs raisons possibles pour lesquelles les liens hypertextes écrits avec une macro VBA d'Excel 2013 ne fonctionnent plus avec Excel 2019. Voici quelques-unes des causes les plus courantes :

  • Les chemins des fichiers ou des dossiers ont été modifiés. Si les liens hypertextes pointent vers des fichiers ou des dossiers qui ont été déplacés ou renommés, ils ne fonctionneront pas. Vous pouvez résoudre ce problème en mettant à jour les chemins des liens hypertextes.
  • Les paramètres de sécurité ont changé. Excel 2019 a des paramètres de sécurité plus stricts que Excel 2013. Cela peut empêcher les macros VBA de s'exécuter, ce qui peut empêcher les liens hypertextes d'être ouverts. Pour résoudre ce problème, vous pouvez désactiver les paramètres de sécurité ou ajouter une exception pour la macro VBA qui crée les liens hypertextes.
  • Il y a un problème avec le code VBA. Il est possible qu'il y ait une erreur dans le code VBA qui crée les liens hypertextes. Si vous avez des compétences en VBA, vous pouvez essayer de déboguer le code pour trouver l'erreur.
 

Statistiques des forums

Discussions
312 209
Messages
2 086 263
Membres
103 167
dernier inscrit
miriame