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

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
Il y a d'autres choses qui ne marchent pas.
En utilisant la feuille PJ du post #1, si je crée dans Paramètre un nouvel agent Anthony à 10€ et que je clique sur Création fiches il ne me crée pas la feuille Agent 3 et laisse la feuille REF_AGT visible, ce qui n'est pas normal.
Avez vous le même effet ?


 

ANTONY34200

XLDnaute Occasionnel
alors juste encore un petit truc, dans le code ci-dessous, en avant dernière ligne, on ne pourrait pas trouver une ligne de code qui appelle le nombre d'heure de l'agent correspondant pour l'afficher en cellule C de la feuille G ?
parce qu'avec le fichier joint, nous sommes pas loin du but
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) = IndexAGT & " - " & NouveauNom
Next N
 

Pièces jointes

  • Planning Test (Essai).zip
    928.9 KB · Affichages: 1

ANTONY34200

XLDnaute Occasionnel
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 Month(Sheets("G").Cells(i, 4)) <> [Mois] Then                      ' Si ligne est datée du mois suivant
            'Sheets("G").Range(i & ":" & i).EntireRow.Hidden = True           ' alors masquer ligne ( annulé car si plus de 35 agants alors certains sont masqués dans les colonnes B et C )
            Sheets("G").Range("D" & i & ":QL" & i).Interior.Color = RGB(0, 0, 0)  ' alors ligne en gris foncé
        Else
            Sheets("G").Range("D" & i & ":QL" & i).Interior.Color = RGB(255, 255, 255)  ' sinon fond blanc
        End If
    Next i
    Sheets("G").Protect
End Sub
au lancement de la feuille G j'ai fait ça :
Code:
Sub Worksheet_Activate()
Sheets("G").Unprotect
    Bloque = 0
    Calculate
' Calcul manuel
    Application.Calculation = xlCalculationManual
' Lancement calcul cumul
    CumulTempsMensuel
    Application.Calculation = xlCalculationAutomatic
    Sheets("G").Protect Password:=""
End Sub
et tout fonctionne comme avant !!


Merci à Sylvanu qui a passé du temps avec moi à résoudre mon problème ...
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…