IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur 400 sur un autre ordinateur mais pas sur le mien [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Responsable des études
    Inscrit en
    Juin 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2016
    Messages : 21
    Par défaut Erreur 400 sur un autre ordinateur mais pas sur le mien
    Bonjour,

    J'ai développé une macro à distance, elle fonctionne parfaitement sur mon poste mais pas sur celui de la personne qui l'utilise. Lorsqu'elle lance la macro (via un bouton) une fenêtre s'ouvre avec une croix rouge et le chiffre 400.
    C'est vraiment cette macro qui bloque car toutes les autres commandes ont été testées et fonctionnent. A savoir que je travaille sur une version 2010 et la personne une 2013..

    le but est d'enregistrer plusieurs fichiers dans le même dossier. A partir du fichier "maitre" on lance une update qui va aller ouvrir tout à tour tous les fichiers excel contenus dans le dossier pour faire des mises à jour.

    Je ne comprends pas quel est le problème, tout fonctionne à merveille sur mon poste. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    Sub subMAJSuivi()
     
     
    ActiveSheet.Unprotect "VCGP"
     
    Dim SousRep As String
    Dim FichierMaitre As Workbook
    Dim Classeur_com As String
    SousRep = ThisWorkbook.Path & "\"
     
    Set FichierMaitre = ThisWorkbook
     
    ChDir SousRep
    Classeur_com = Dir(SousRep & "*.xlsm")
    While Len(Classeur_com) > 0
    If Classeur_com <> FichierMaitre.Name Then
    Workbooks.Open Classeur_com
     
     
     
    Dim shSuivi As Excel.Worksheet, shSource As Excel.Worksheet
    Dim L1Suivi As Long, L1Source As Long, LDSuivi As Long, LDSource As Long
    Dim iBT As Integer, sNumBT As String
    Dim x As Long, y As Long, z As Long, w As Long
     
    Set shSuivi = Application.Workbooks(Classeur_com).Worksheets("Business projects list")
    Set shSource = Application.ThisWorkbook.Worksheets("Business projects list")
     
    shSuivi.Range("A:FF").EntireColumn.Hidden = False
     
     Application.DisplayAlerts = False
     
    L1Suivi = 6
    L1Source = 6
    iBT = 1 'numéro colonne #BT
    LDSuivi = shSuivi.Cells(Application.Rows.Count, iBT).End(xlUp).Row
    LDSource = shSource.Cells(Application.Rows.Count, iBT).End(xlUp).Row
     
    For x = L1Suivi To LDSuivi
        sNumBT = shSuivi.Cells(x, iBT).Value
        For y = L1Source To LDSource
        z = shSource.Cells(y, iBT).Row
     
            If shSource.Cells(y, iBT).Value = sNumBT Then shSuivi.Rows(x).Copy shSource.Rows(z)
            Next y
     
            For w = L1Source To LDSource
     
            If shSource.Cells(w, iBT).Value = sNumBT Then Exit For
        Next w
        If w > LDSource Then
            LDSource = LDSource + 1
            shSuivi.Rows(x).Copy shSource.Rows(LDSource)
     
     
         End If
     
    Next x
     
    Set shSource = Nothing
    Set shSuivi = Nothing
     
    Workbooks(Classeur_com).Close savechanges:=False
    End If
    Classeur_com = Dir
    Wend
     
     
    ActiveSheet.Protect "VCGP"
     
    Application.DisplayAlerts = True
     
    End Sub
    Si quelqu'un a une idée..?

    Merciiiii d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    sur quelle ligne de la procédure l'erreur survient ?

    parce que sinon, difficile de donner la bonne piste.

    l'autre utilisateur, il utilise cette procédure sur les mêmes classeurs que toi ou sur des classeurs différents ?

    la seule chose que je peux entrevoir sur une erreur 400 de ce type, c'est des cellules fusionnées .... mais là encore, c'est une supposition sans avoir décortiqué ta procédure.

    merci de nous apporter le complément d'informations

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je vérifierais les valeurs ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Classeur_com <> FichierMaitre.Name Then
    et ici, il faudrait s'assurer que le nombre de colonnes soit le même dans les 2 fichiers.
    Es-tu certain qu'il n'y a pas des fichiers xls et xlsx (ou xlsm) dans le lot ?
    Leur nombre de colonnes (et de lignes) étant différent, ça pourrait causer une erreur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shSuivi.Rows(x).Copy shSource.Rows(LDSource)

  4. #4
    Membre averti
    Femme Profil pro
    Responsable des études
    Inscrit en
    Juin 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2016
    Messages : 21
    Par défaut
    Bonjour,

    Pour répondre à toutes les questions :
    * l'utilisateur utilise exactement les mêmes fichiers que moi (c'est moi qui lui ai envoyé et à priori il ne les a pas modifiés)
    * les colonnes sont exactement les mêmes dans le deux fichiers car ce sont tous des copies du "fichier_maitre" dans le code.
    * ce sont également tous des fichiers xlsm (enfin chez moi du moins)

    Je n'ai pas eu de réponse sur la ligne qui entraine le bug mais par déduction je pense que ça se passe sur ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Set FichierMaitre = ThisWorkbook
     
    ChDir SousRep
    Classeur_com = Dir(SousRep & "*.xlsm")
    While Len(Classeur_com) > 0
    If Classeur_com <> FichierMaitre.Name Then
    Workbooks.Open Classeur_com
    Je sais que le code renvoi bien le chemin du fichier et que l'erreur apparait même quand il n'y a pas d'autre fichier à ouvrir...

    Je vous donne des précisions dès que j'en sais un peu plus sur la ligne qui bugue.

    Merci beaucoup pour vos éléments de réponse

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    j'avance une supposition mais je ne suis pas très calé dans l'informatique "réseau"

    peut-être une différence de reconnaissance du reseau ? Ou par exemple les "lettres" des lecteurs réseaux mappés qui ne sont pas les mêmes ?

  6. #6
    Membre averti
    Femme Profil pro
    Responsable des études
    Inscrit en
    Juin 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2016
    Messages : 21
    Par défaut
    Bonjour à tous,

    Apparemment la ligne qui bugue est celle qui demande l'ouverture des fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks.Open Classeur_com
    J'ai testé les différentes lignes précédentes : le code me rapatrie les bons noms de fichiers..

    L'hypothèse du réseau est très probable. Le problème pourrait se régler en enregistrant les fichiers sur le bureau?

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Tu dis que tu lui envoies...
    Es-tu certain qu'il les enregistre quelque part ?
    Peut-être qu'il les roule après les avoir ouverts sans les sauvegarder ?

  8. #8
    Membre averti
    Femme Profil pro
    Responsable des études
    Inscrit en
    Juin 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2016
    Messages : 21
    Par défaut
    Bonjour à tous,

    Cette erreur provenait bien d'un problème de réseau. En effet, lorsque le fichier est enregistré ailleurs que sur le bureau, l'erreur 400 apparaît.

    Malheureusement, après quelques jours de fonctionnement, l'erreur 400 est revenue mais pour une autre raison puisque le fichier est toujours enregistré sur le bureau.
    Lorsque je fais du pas à pas, l'erreur 400 se transforme en "erreur d'execution 1004 : erreur définie par l'application ou par l'object"

    Le bout de code qui fait survenir cette erreur est celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For x = L1Suivi To LDSuivi
        sNumBT = shSuivi.Cells(x, iBT).Value
        For y = L1Source To LDSource
        z = shSource.Cells(y, iBT).Row
     
            If shSource.Cells(y, iBT).Value = sNumBT Then shSuivi.Rows(x).Copy shSource.Rows(z)
            Next y
    Je ne comprends pas d'où ça vient, sachant que ça fonctionnait très bien avant!

    Merci pour votre aide,

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    J'ai beau ouvrir mes yeux, je ne vois personnellement aucune erreur dans cette ligne de code.
    Je vois bien un peu partout de drôles de lourdeurs inutiles (la plus amusante étant de loin un calcul de z qui n'est autre qu'un y dans la boucle des y ...), mais il ne s'agit que de lourdeurs inutiles et non génératrices d'erreurs ...

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le fichier maître (Thisworkbook) est bien au format Xlsx ou Xlsm ?

    Sur cette ligne de code VBA, une erreur 1004 est "en général" (mais pas toujours) lié à un dépassement de la plage d'une feuille de calcul.
    D'où la primauté de cette éventualité dans tes tests pour cerner le problème

    que valent chaque variable de cette ligne de code quand elle plante ?

  11. #11
    Membre averti
    Femme Profil pro
    Responsable des études
    Inscrit en
    Juin 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2016
    Messages : 21
    Par défaut
    Bonjour,

    Merci pour votre réponse qui m'a bien aidé.

    C'était en effet un problème de plage de données : la macro ne fonctionnait pas car une colonne avait été filtrée et les données ne pouvaient, je pense, pas être copiées... J'ai donc ajouté un code pour tout défiltrer !

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/11/2016, 13h06
  2. [Débutant] Erreur sur un ordinateur mais pas sur l'autre
    Par noftal dans le forum VB.NET
    Réponses: 4
    Dernier message: 05/12/2013, 17h45
  3. [AC-2010] Formulaire marche sur autres ordinateurs mais pas sur le mien
    Par lelvivien dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/12/2012, 07h23
  4. Erreur sur un poste mais pas sur un autre
    Par hawk² dans le forum Framework .NET
    Réponses: 10
    Dernier message: 27/08/2007, 09h33
  5. [2.0] connexion qui fonctionne chez moi mais pas sur un autre pc
    Par Lorenzeb dans le forum Accès aux données
    Réponses: 1
    Dernier message: 13/09/2006, 17h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo