Macro qui fonctionne en local mais bug en réseau

Fermé
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018 - 8 juin 2016 à 17:06
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018 - 13 juin 2016 à 16:00
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.
A voir également:

11 réponses

f894009 Messages postés 17238 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 7 février 2025 1 712
8 juin 2016 à 17:23
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
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
8 juin 2016 à 17:30
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
f894009 Messages postés 17238 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 7 février 2025 1 712
8 juin 2016 à 18:01
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
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
9 juin 2016 à 10:25
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
f894009 Messages postés 17238 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 7 février 2025 1 712
Modifié par f894009 le 9/06/2016 à 11:05
Bonjour,

pour afficher une UF existante:
DATACLIENT.Show ' Affichage Userform 
0
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
9 juin 2016 à 11:32
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
f894009 Messages postés 17238 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 7 février 2025 1 712
9 juin 2016 à 11:42
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
9 juin 2016 à 15:01
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
f894009 Messages postés 17238 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 7 février 2025 1 712
9 juin 2016 à 15:19
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
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
9 juin 2016 à 15:59
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
f894009 Messages postés 17238 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 7 février 2025 1 712
Modifié par f894009 le 9/06/2016 à 17:54
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
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
9 juin 2016 à 18:13
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
f894009 Messages postés 17238 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 7 février 2025 1 712
10 juin 2016 à 07:14
Bonjour,
Essayez le ficher que je vous ai mis à disposition, j'ai fait les modifications de code décrites dans le post11
0
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
13 juin 2016 à 10:38
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
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
13 juin 2016 à 11:45
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
f894009 Messages postés 17238 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 7 février 2025 1 712
13 juin 2016 à 13:32
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
MKCS Messages postés 21 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 9 mai 2018
13 juin 2016 à 16:00
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