Macro qui fonctionne en local mais bug en réseau

MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Nous venons de créer une macro, qui fonctionne très bien en local, mais dès que nous le mettons en ligne sur le réseau, il affiche le message d'erreur suivant à l'ouverture du fichier: "Erreur d'exécution '1004': La méthode 'Sheets' de l'objet_global a échoué".
Cependant, lorsque nous cliquons sur "FIN" (la fonction "DEBOGAGE" n'est pas disponible), le fichier fonctionne correctement, mais le but est de pouvoir ouvrir le fichier sans avoir à cliquer sur "FIN" pour l'utiliser.
Après quelques recherches, il semblerait que le code qui pose problème soit celui concernant l'affichage de notre userform, c'est à dire "Userform1.show". En effet, après avoir supprimé plusieurs lignes de code pour trouver d'ou venait le problème, c'est sur celui-ci qui bloque.

Auriez-vous une idée de ce qui peut causer ce problème svp?

Merci par avance.

11 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    c'est à dire "Userform1.show"
    Ce n'est pas cette ligne qui vous pose problème mais le code dans l'userform1.
    Lancez votre UF en partant de la fenêtre VBA pour voir quelle ligne est en cause
    0
  2. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Lorsque nous lançons l'UF en partant de la fenêtre VBA, il s'exécute correctement...
    En effet, le message d'erreur ne survient qu'à l'ouverture du fichier. Dès que nous cliquons sur "FIN" dans la fenêtre du message d'erreur, tout fonctionne correctement...
    Nous sommes un peu perdu il faut l'avouer...

    Merci de votre aide en tout cas
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Pouvez-vous mettre votre fichier a dispo sans donnees confidentielles

      Pour transmettre un fichier,
      Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
      il faut passer par un site de pièce jointe tel que cjoint.com

      Allez sur ce site : https://www.cjoint.com/
      Clic sur parcourir,
      Cherche ton fichier,
      clic sur ouvrir,
      Clic sur "Créer le lien cjoint",
      Copier le lien,
      Revenir ici le coller dans une réponse...
      0
  3. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    Malheureusement nous ne pouvons pas mettre le fichier à dispo...
    Cependant, le code qui génère le message d'erreur à l'ouverture est le suivant:

    ' Affichage USERFORM DATACLIENT si son code change et est <> de ""
    If Target.Address = "$C$8" Then
    If Sheets("FORMULAIRE").Range("C8").Value <> "" Then ' Code client saisi et non réinitialisé
    Sheets("FORMULAIRE").Unprotect Password:=KEY ' Déprotection formulaire
    Sheets("FORMULAIRE").Range("F12").Value = Sheets("ASSISTANCE").Range("D12").Value ' Transfert numéro du département > code JPG
    Sheets("FORMULAIRE").Protect Password:=KEY ' Protection formulaire
    End If
    If Sheets("FORMULAIRE").Range("D12").Value <> "" Then ' Code client ayant généré un CP
    UserForms.Add("DATACLIENT").Show ' Affichage Userform
    End If
    End If

    En effet, lorsque nous supprimons juste cette partie de code, le message d'erreur n’apparaît plus.

    En espérant que cela vous suffise...

    Merci encore pour votre aide.
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      pour afficher une UF existante:
      DATACLIENT.Show ' Affichage Userform 
      0
  4. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Nous avions essayé ce code mais dans le doute nous venons de réessayé (nous le laissons d'ailleurs car il est effectivement plus adapté) mais sans succès :(
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      A quel endroit est ce code ???
      Car le message d'erreur ne survient qu'à l'ouverture du fichier
      et ceci m'interpelle
      If Target.Address = "$C$8" Then 
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Le code suivant est situé au niveau de la feuille "FORMULAIRE" dans l’événement "Private Sub Worksheet_Change(ByVal Target As Range)":

    ' Affichage USERFORM DATACLIENT si son code change et est <> de ""
    If Target.Address = "$C$8" Then
    If Sheets("FORMULAIRE").Range("C8").Value <> "" Then ' Code client saisi et non réinitialisé
    Sheets("FORMULAIRE").Unprotect Password:=KEY ' Déprotection formulaire
    Sheets("FORMULAIRE").Range("F12").Value = Sheets("FORMULAIRE").Range("D12").Value ' Transfert numéro du département > code JPG
    Sheets("FORMULAIRE").Protect Password:=KEY ' Protection formulaire
    End If
    If Sheets("FORMULAIRE").Range("D12").Value <> "" Then ' Code client ayant généré un CP
    DATACLIENT.Show ' Affichage Userform
    End If
    End If
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      J'ai fait un fichier en partant de votre code que j'ai mis sur le disque de ma box internet et pas de probleme

      https://www.cjoint.com/c/FFjnszpqHRf

      Copier ce fichier sur votre PC distant et tester
      0
  7. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Effectivement, nous venons de mettre votre fichier sur réseau et il fonctionne sans message d'erreur à l'ouverture.
    J'en déduis donc qu'il faut plutôt chercher dans le code de l'UF directement:

    Private Sub UserForm_Activate()
    ' Affichage POP-UP Client
    LDURETE.Caption = " Dureté H2O en " & Sheets("FORMULAIRE").Range("G12").Value
    VDURETE.Caption = Sheets("FORMULAIRE").Range("H12").Value ' Valeur KH du Client
    If VDURETE.Caption = "FAIBLE (inférieure à 7 °KH)" Then FDURETE.BackColor = RGB(0, 255, 0)
    If VDURETE.Caption = "MOYENNE (entre 7 et 13 °KH)" Then FDURETE.BackColor = RGB(255, 255, 0)
    If VDURETE.Caption = "FORTE (supérieure à 13 °KH)" Then FDURETE.BackColor = RGB(255, 0, 0)
    If VDURETE.Caption = "VARIABLE (entre 0 et 16 °KH)" Then FDURETE.BackColor = RGB(255, 0, 255)
    VSAV.Caption = Sheets("FORMULAIRE").Range("F5").Value ' Technicien SAV du Client
    If Sheets("FORMULAIRE").Range("H5").Value = "A" Then VATEL.Caption = "X" ' Technicien ATELIER du client
    If Sheets("FORMULAIRE").Range("H5").Value = "B" Then VATEL.Caption = "Y"
    If Sheets("FORMULAIRE").Range("H5").Value = "A" Then VATEL.Caption = "Z"
    If Sheets("FORMULAIRE").Range("H5").Value = "A" Then ' Affichage Atelier
    AB.Enabled = True
    BB.Enabled = False
    CC.Enabled = False
    End If
    If Sheets("FORMULAIRE").Range("H5").Value = "B" Then
    AA.Enabled = False
    BB.Enabled = True
    CC.Enabled = False
    End If
    If Sheets("FORMULAIRE").Range("H5").Value = "C" Then
    AA.Enabled = False
    BB.Enabled = False
    CC.Enabled = True
    End If
    Dim DEP As String
    DEP = Sheets("FORMULAIRE").Range("F12").Value
    If DEP <> "" Then CARTE.Picture = LoadPicture(RESEAU & "DATA JPG\FR" & DEP & ".jpg")
    ' Affichage résumé historique Client
    Sheets("POPUP").Range("H2:H12").Value = "" 'Efface résumé historique précédent
    Sheets("POPUP").Rows("1:1").AutoFilter ' Activation des filtres de l'historique
    Worksheets("POPUP").AutoFilter.Sort.SortFields.Clear 'Tri date(s) évênement(s) (du plus récent au plus ancien)
    Worksheets("POPUP").AutoFilter.Sort.SortFields.Add KEY:=Range _
    ("B1:B5002"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
    xlSortTextAsNumbers
    With Worksheets("POPUP").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    Dim SAP As String
    SAP = Sheets("FORMULAIRE").Range("C8").Value ' Récupération numéro Client
    Sheets("POPUP").Range("A1:I5002").AutoFilter Field:=1, Criteria1:=SAP ' Filtre numéro SAP Client
    Sheets("POPUP").Range("A1:I5002").AutoFilter Field:=3, Criteria1:="<>" 'Tri pour retirer lignes vides
    Application.ScreenUpdating = False ' Evite l'affichage de la feuille POPUP (ON)
    Sheets("POPUP").Activate 'Copier-Coller historique sur une seule cellule
    Range("C:C").Select
    Selection.Copy
    Range("H1").Select
    ActiveSheet.Paste
    Application.ScreenUpdating = True 'Evite l'affichage de la feuille POPUP (OFF)
    HISTORIQUE.Value = Sheets("POPUP").Range("I1").Value
    HISTORIQUE.SelStart = 0 'Positionnement Première ligne historique
    Sheets("POPUP").Rows("1:1").AutoFilter ' Désactivation des filtres de l'historique
    End Sub

    Private Sub UserForm_Initialize()
    ' Titre Userform
    Me.Caption = "DATA CLIENT " & Sheets("FORMULAIRE").Range("C8").Value & " [ASSISTANCE]"
    End Sub

    Private Sub UserForm_Terminate()
    'Sélection première cellule formulaire
    Sheets("FORMULAIRE").Activate
    End Sub

    Nous allons donc chercher de ce côté là mais n'hésitez pas à nous dire si vous voyer quelque chose qui cloche dans notre code.

    Merci encore pour votre aide
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      J'en déduis donc qu'il faut plutôt chercher dans le code de l'UF directement
      Qu'est-ce que j'avais ecrit au debut ???????

      entre autres bizarerie(s)

      If Sheets("FORMULAIRE").Range("H5").Value = "A" Then VATEL.Caption = "X" ' Technicien ATELIER du client
      If Sheets("FORMULAIRE").Range("H5").Value = "B" Then VATEL.Caption = "Y"
      If Sheets("FORMULAIRE").Range("H5").Value = "A" Then VATEL.Caption = "Z"


      pour le deuxieme c'est surement "C"

      je continue


      a mettre a la place de ce qui existe
         If VDURETE.Caption = "FAIBLE (inférieure à 7 °KH)" Then
              FDURETE.BackColor = RGB(0, 255, 0)
          ElseIf VDURETE.Caption = "MOYENNE (entre 7 et 13 °KH)" Then
              FDURETE.BackColor = RGB(255, 255, 0)
          ElseIf VDURETE.Caption = "FORTE (supérieure à 13 °KH)" Then
              FDURETE.BackColor = RGB(255, 0, 0)
          ElseIf VDURETE.Caption = "VARIABLE (entre 0 et 16 °KH)" Then
              FDURETE.BackColor = RGB(255, 0, 255)
          Else
          End If
      
      

      If Sheets("FORMULAIRE").Range("H5").Value = "A" Then ' Affichage Atelier
              VATEL.Caption = "X" ' Technicien ATELIER du client
              AB.Enabled = True
              BB.Enabled = False
              CC.Enabled = False
          ElseIf Sheets("FORMULAIRE").Range("H5").Value = "B" Then
              VATEL.Caption = "Y"
              AA.Enabled = False
              BB.Enabled = True
              CC.Enabled = False
          ElseIf Sheets("FORMULAIRE").Range("H5").Value = "C" Then
              VATEL.Caption = "Z"
              AA.Enabled = False
              BB.Enabled = False
              CC.Enabled = True
          End If


      Par contre n'ayant pas de donnees coherantes, j'ai des problemes avec les filtres

      fichier: https://www.cjoint.com/c/FFjp2LpGEAf
      0
  8. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Vous aviez effectivement raison. Nous nous excusons pour le temps perdu et vous remercions de votre patience

    Oui c'est bien "C" pour le 3ème merci

    Nous continuons à chercher de notre côté également
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      Essayez le ficher que je vous ai mis à disposition, j'ai fait les modifications de code décrites dans le post11
      0
  9. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    Nous avons modifié notre fichier avec vos indications mais le message d'erreur est toujours là en réseau.
    Nous avons donc essayé de mettre un apostrophe devant tous les codes propres à l'UF et le message d'erreur est toujours là.
    Nous sommes donc de retour à la case départ avec notre code "Userform1.show" qui pose problème, uniquement en réseau.
    Est-il possible que le fait d'utiliser plusieurs UF dans un même fichier pose problème? Est-ce que le fait de le mettre en réseau demande un paramétrage bien spécifique? Vu que le fichier fonctionne très bien en local...
    J'avoue je ne sais plus dans quel sens chercher...

    Merci pour votre aide
    0
  10. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Re,

    Lorsqu'on supprime la 2ème condition du code suivant, le fichier fonctionne.
    Connaissez-vous un autre moyen de l'exprimer svp?

    ' Affichage UF si son code change et est <> de ""
    If Target.Address = "$C$8" Then
    If Sheets("FORMULAIRE").Range("C8").Value <> "" Then
    Sheets("FORMULAIRE").Unprotect Password:=KEY ' Déprotection formulaire
    Sheets("FORMULAIRE").Range("F12").Value = Sheets("FORMULAIRE").Range("D12").Value ' Transfert numéro du département
    Sheets("FORMULAIRE").Protect Password:=KEY ' Protection formulaire
    DATACLIENT.Show ' Affichage POP-UP"
    End If
    End If

    Merci par avance
    0
  11. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    J'avais un test suplementaire pour D12 !!!! Mais bon...

    Private Sub Worksheet_Change(ByVal Target As Range)
        ' Affichage USERFORM DATACLIENT si son code change et est <> de ""
        If Target.Address = "$C$8" And Target <> "" Then
            Unprotect Password:=Key ' Déprotection formulaire
            Range("F12").Value = Range("D12").Value ' Transfert numéro du département > code JPG
            Protect Password:=Key ' Protection formulaire
            If Range("D12") <> "" Then ' Code client ayant généré un CP
                DATACLIENT.Show ' Affichage Userform
            End If
        End If
    End Sub
    
    0
  12. MKCS Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
     
    Cela ne fonctionne pas non plus...

    Mais nous avons enfin trouver le problème. En effet, à l'ouverture et à la fermeture du fichier, nous demandions de mettre toutes les cellules de la feuille FORMULAIRE à vide. Il semblerait que cela créait un conflit avec l'ordre de tester la cellule C8 dont le code est ci-dessus. Nous avons donc simplement supprimé notre demande de mettre toutes les cellules à vide à l'ouverture et l'avons laissé lors de la fermeture. Et cela a enfin réglé notre problème.

    Nous tenions en tout cas à vous remercier pour votre temps et votre patience, ainsi que les pistes que vous nous avez apporté.

    Bonne continuation à vous
    0