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 de compilation sur les autres postes [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Points : 64
    Points
    64
    Par défaut Erreur de compilation sur les autres postes
    Bonjour,

    J'utilise la macro ci dessous sur mon poste sans problème, mais rencontre une Erreur de compilation "projet ou bibliothèque introuvable" sur les autres postes.
    L'erreur est au niveau de [Etat]
    Etat correspondant au nom des cellules nommées.

    Code: (permet de colorer les cellules de 1 à 15 suivant la couleur liée à la cellule 15)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
     
      If Target.Column = 15 Then
         On Error Resume Next
        Cells(Target.Row, 1).Resize(, 15).Interior.ColorIndex = [Etat].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
     
      End If
    End Sub
    Je pense que c'est un problème de déclaration de variables????
    Pouvez-vous m'aider?
    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour, bonjour

    merci de mettre le code entre balises via l'icône dédiée #


    Le nom Etat apparait-il dans la liste des noms définis sur les autres ordinateurs ?

    Si oui, remplacer alors [Etat] par Range("Etat")

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Le fichier Excel en question est disponible sur le réseau, mes collègues utilisent donc le même fichier que moi. Par conséquent les cellules nommées "Etat" sont les autres postes.
    J'ai essayé le code ci dessous.
    Plus d"erreur mais la macro ne fonctionne plus, pas de changement des couleurs....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
     
     
      If Target.Column = 15 Then
         On Error Resume Next
     
        Cells(Target.Row, 1).Resize(, 15).Interior.ColorIndex = Range("Etat").Find(Target, LookAt:=xlWhole).Interior.ColorIndex
      End If
    End Sub

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Déjà avec la présence de la ligne n°4, on ne peut pas savoir s'il y a une erreur, à supprimer donc !

    Edit : la ligne n°7 dans le second code maintenant entre balises …

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Points : 64
    Points
    64
    Par défaut
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim Etat As String
    Etat = Range("etat").Value
     
      If Target.Column = 15 Then
         'On Error Resume Next
        'Cells(Target.Row, 1).Resize(, 15).Interior.ColorIndex = [Etat].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
        Cells(Target.Row, 1).Resize(, 15).Interior.ColorIndex = Etat.Find(Target, LookAt:=xlWhole).Interior.ColorIndex
      End If
    End Sub
    Mais cela provoque Erreur de compilation, qualificateur incorrect. Etat est surligné.

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Etat est surligné.

    Bien, mais c'est utile aussi de préciser le numéro de la ligne ‼

    Je suppose que c'est la n° 10 et dans ce cas je dirais : normal ! Grossière boulette ‼

    En fait c'était ma première réponse mais je l'ai effacée croyant faire fausse route …


    Tout d'abord, la base : à quoi la méthode Find doit-elle être rattachée ?

    Consulter son aide et son exemple (cela m'évite un roman et comme c'est bien expliqué et c'est la base)
    car certainement pas à une valeur …


    Ma première idée est les autres postes ne sont pas en cause, le code ne fonctionnant pas dès l'origine ‼

    Ce serait bien aussi d'expliquer littéralement ce qu'est censé effectuer cette procédure …

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Points : 64
    Points
    64
    Par défaut
    Oui c'est bien en ligne 10 qu'il y a problème.

    L'objectif de ce code est de colorier les cellules de 1 à 15 d'une ligne d'un tableau dans lequel je classe mes commandes.
    J'ai une première feuille (Suivi de commandes)
    Une ligne par commande, et en bout de chaque ligne (colonne 15) j'ai un menu déroulant pour choisir l'état de la commande. "En cours", "Annulée" ...etc...
    Le menu déroulant est donc une cellule, validation liste = Etat (nom des cellules "En cours" , "Annulée" ...)
    Cette liste d'état se trouve sur une autre feuille (Données)
    Ensuite, dans la feuille données, la cellule où est inscrite "En cours" est coloriée en bleu, la cellule où est inscrite "Annulée" est coloriée en rouge...

    La macro permet de récupérer la couleur de la ligne de commande en fonction de son état.
    Quand je passe de "En cours" à "Annulée", la ligne passe du bleu au rouge automatiquement.

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    La cellule référence pour la couleur est dans la même feuille ou pas ?

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Points : 64
    Points
    64
    Par défaut
    La feuille "commande" avec des lignes de commandes.
    Au bout de chaque lignes le menu déroulant pour choisir l'état de la commande.
    (En cours, annulée..) c'est la 15eme cellule de la ligne.
    La feuille "données" avec la liste des différents états possibles (En cours, annulée..) les cellules de cette liste sont nommées "Etat" chaque cellule à une couleur différente.
    Au moment où on change l'état de la commande avec le menu déroulant, la macro va chercher la couleur correspondante ( dans la feuille "données" ), la macro colorie les cellules de la ligne de commande modifiée.
    Pour compléter mon explication j'ai mis un fichier exemple en pièce jointe.
    Fichiers attachés Fichiers attachés

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Le code dans la pièce jointe fonctionne tel quel dans ma version 2003 et même en retirant la ligne On Error

    Donc certainement un souci dans le genre de ton autre discussion qui vient d'être résolue …

    A mon avis, il serait bien de définir une variable Range comme dans l'exemple de l'aide de la méthode Find au cas où …

    Et peut-être passer plus de paramètres dans cette méthode comme avec l'Enregistreur de macros.

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Points : 64
    Points
    64
    Par défaut
    Oui c'est mon avis aussi, le problème ressemble beaucoup à celui que j'ai déjà eu. J'ai compris ce qu'il faut vair pour déclarer une variable provenant de la valeur d'une cellule.
    Cette fois ci il faut que je déclare la liste nommée "Etat" et mon manque de connaissance en VBA fait que n'arrive pas à trouver de solution.

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Pourtant rien qu'en lisant l'aide de la méthode et par l'utilisation de l'Enregistreur de macros ! …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Rg As Range
     
        If Target.Column = 3 Then
            Set Rg = [etat].Find(Target.Value, , xlValues, xlWhole)
     
            If Not Rg Is Nothing Then
                Target(, -1).Resize(, 4).Interior.ColorIndex = Rg.Interior.ColorIndex
                Set Rg = Nothing
            End If
        End If
    End Sub
    etat n'est pas une variable mais un nom défini dans le classeur.

    [etat] peut être substitué par Range("etat") … Une variable est donc inutile !

    Sinon as-tu testé ta pièce jointe sur un des ordinateurs ayant le souci ?

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    __________________________________________________________________________________________
    Lire … C'est s'investir !

  13. #13
    Invité
    Invité(e)
    Par défaut bonjour,
    tu n'as pas donné l'intitulé du message d'erreur!

    si ta macro fonctionne sur ton poste quel différence avec les autre Windows (32/64) Excel (32/64)?

    enfin toutes les différences entre machines!

  14. #14
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Si en post #5 …

    Et l'erreur est peut-être tellement évidente vu le message, rien que par le nom de la variable de la ligne n°10
    utilisation d'une variable au lieu d'un objet ! …

    Et comme une variable est inutile ‼

    Mon post #6 posait clairement la question, et dire que tout est dans l'aide intégrée !

    Le code tel qu'il est dans le post #5 ne peut fonctionner, évidemment ce n'est pas le même dans la pièce jointe !

  15. #15
    Invité
    Invité(e)
    Par défaut
    désolé Marc j'ai lue trop vite et passé des infos!

  16. #16
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    No problemo !

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Points : 64
    Points
    64
    Par défaut
    Avec le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Rg As Range
     
        If Target.Column = 15 Then
            Set Rg = [Etat].Find(Target.Value, , xlValues, xlWhole)
     
            If Not Rg Is Nothing Then
                Target(, -13).Resize(, 15).Interior.ColorIndex = Rg.Interior.ColorIndex
                Set Rg = Nothing
            End If
        End If
    End Sub
    Cela fonctionne bien sur mon poste mais pas sur le poste de mon collègue.
    Pourtant configuration identique Exel 2003, Windows 7

    =>Quand je change l'état de la commande sur le poste de mon collègue "Erreur de compilation, projet ou bibliothèque introuvable" [Etat] ligne n°5 surligné en jaune.

    Ca ressemble vraiment beaucoup au problème que j'ai déja rencontré. Mais rien à faire je ne trouve pas de solution.

  18. #18
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    [etat] peut être substitué par Range("etat") …

    Sinon as-tu testé ta pièce jointe sur un des ordinateurs ayant le souci ?
    Alors ?

  19. #19
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Points : 64
    Points
    64
    Par défaut
    Nouvel essai, je remplace [Etat] par Range("etat")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Rg As Range
     
        If Target.Column = 15 Then
            Set Rg = Range("etat").Find(Target.Value, , xlValues, xlWhole)
            'Set Rg = [Etat].Find(Target.Value, , xlValues, xlWhole)
     
            If Not Rg Is Nothing Then
                Target(, -13).Resize(, 15).Interior.ColorIndex = Rg.Interior.ColorIndex
                Set Rg = Nothing
            End If
        End If
    End Sub
    => Erreur "La méthode 'Range' de l'objet à échoué" et la ligne 6 est surlignée

  20. #20
    Invité
    Invité(e)
    Par défaut bonjour,
    le bibliothèques sont référencées dans le projet vb avec le chemin complet de leurs emplacement.

    C:\Program Files hors dans certaine version windows elles sont dans C:\Program Files (x86) d'ou "Erreur de compilation, projet ou bibliothèque introuvable"

    dans VBA->Outils->références.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. erreur de compilation sur les operateurs
    Par Invité dans le forum Langage
    Réponses: 1
    Dernier message: 15/05/2011, 03h42
  2. Erreur d'accès à une copie de BD mysql5 sur un autre poste
    Par Klemsy78 dans le forum Installation
    Réponses: 1
    Dernier message: 31/07/2009, 20h10
  3. Macro qui marche sur un poste et pas sur les autres
    Par INeedHelp dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/05/2008, 09h58
  4. Réponses: 6
    Dernier message: 01/04/2008, 16h42
  5. Réponses: 17
    Dernier message: 15/10/2003, 02h45

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