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 :

problème d'execution lors d'une sélection [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut problème d'execution lors d'une sélection
    Bonjour,
    J'ai un code pour exécuter une macro lorsque je clique sur une cellule

    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_SelectionChange(ByVal Target As Range)
     
    If Target.Column = 1 Then
         If Target.Value <> "" And IsNumeric(Target.Value) Then
            Feuil6.Range(Target.Address).Font.ColorIndex = 3
            Feuil6.Range(Target.Address).Interior.ColorIndex = 6
            Feuil6.Range(Target.Address).Font.Bold = True
            Feuil1.Select
            Feuil1.Rows(Target.Value).Select
         End If
    End If
    End Sub
    Le problème c'est lorsque je selectionne la ligne ou y a une valeur sur la feuille 6 , ca créer une "erreur d'execution 13 : incompatibilité de type"

    Est ce que quelqu'un peut corriger le code de manière a ce que ma macro ne plante pas svp.

    Je ne maitrise absolument pas ce genre de manipulation.

    Merci d'avance
    Cordialement
    DoDo

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut erreur sélection
    Bonjour Dodo69, Bonjour le Forum,

    Je viens d'éxécuter ton code (excel 2003) sans problème.

    Sur quelle ligne se présente le bug?

    Précision au cas où

    désigne le nom de ta feuille dans ton éditeur VBE.

    Si tel n'est pas le cas, il faudrait écrire ou bien

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut précision target
    Je reviens

    Ecrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil6.Range(Target.Address)
    est redondant.

    En effet, ton évènement est écrit dans le code de ta feuille.
    De plus, Target est déclarée comme un objet Range.

    Tu peux donc écrire

    D'autre part, il y a un espace inclus dans 3 lignes de ton code (Après Address)

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    Bonjour MarcelG,

    Tout d'abord merci pour l'information
    Ca allège bien le code

    Après, pour être un peu plus précis:

    J'ai un programme qui cherche des numéro de ligne qui comporte des erreurs dans la base de donnée (feuille1), la macro écrit ces numéros de ligne sur la feuil6 dans la colonne A , les uns a la suite des autres...

    Lorsque l'utilisateur clique sur un de ses numéros (feuil6) le code que je t'ai montré va selectionner la ligne de la feuil1, jusqu'a là ya pas de problème le code marche

    Cependant, si l'utilisateur, au lieu de juste cliquer sur une celulle, selectionne une ligne complète, ou alors selectionne plusieur cellule de la colonne A, Il y a un problème d'éxécution...

    Je sais pas si j'ai été clair , n'hésite pas à me demandé si ce n'est aps le cas..

    Merci d'essayer de m'aider

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut target
    Dans ce cas, tu peux tester sur le nombre de cellules sélectionnées.

    En effet, Target est un objet Range, ce qui signifie que plusieurs cellules peuvent être concernées.

    Si tu ne veux appliquer ton code évènement que pour la sélection d'une cellule.

    Tu peux coder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Cells.Count = 1
    (à adapter)

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    Merci de ta proposition malheureusement ca na marche pas :s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If Target.Column = 1 Then
         If Target.Value <> "" And IsNumeric(Target.Value) And Target.Cells.Count = 1 Then
            Target.Font.ColorIndex = 3
            Target.Interior.ColorIndex = 6
            Target.Font.Bold = True
            Feuil1.Select
            Feuil1.Rows(Target.Value).Select
         End If
    End If
    End Sub
    Autrement y a pas un code pour dire
    Si jamais y a une erreur, alors ne rien faire ?

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut target
    Dodo69

    Je viens de recopier ton code intégral. Aucun problème.

    Précise la ligne qui buggue.

    Sinon, tu peux écrire

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
            If .Cells.Count > 1 Then
                MsgBox "Erreur!"
                Exit Sub
            End If
            If .Column = 1 Then
                 If .Value <> "" And IsNumeric(Target.Value) Then
                    .Font.ColorIndex = 3
                    .Interior.ColorIndex = 6
                    .Font.Bold = True
                    Feuil1.Select
                    Feuil1.Rows(Target.Value).Select
                 End If
            End If
    End With
    End Sub

  8. #8
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Par défaut
    Ba pour faire simple, Toutes les ligne bug :s

    Mais c'est pas grave, tu as trouver la solution que j'attendais

    J'ai donc au final:
    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
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
            If .Cells.Count > 1 Then
     
                Exit Sub
            End If
            If .Column = 1 Then
                 If .Value <> "" And IsNumeric(Target.Value) Then
                    .Font.ColorIndex = 3
                    .Interior.ColorIndex = 6
                    .Font.Bold = True
                    Feuil1.Select
                    Feuil1.Rows(Target.Value).Select
                 End If
            End If
    End With
    End Sub
    Merci pour ton aide MarcelG
    A bientot, Je trouve tes explication très claires c'est très appréciable

    Merci
    A bientot
    Cordialement
    Dodo

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

Discussions similaires

  1. [XI R2] Problème lors d'une sélection d'une date
    Par MOMO_LAM dans le forum Webi
    Réponses: 1
    Dernier message: 07/01/2009, 16h25
  2. Comment récuperer un élément dans une listview lors d'une sélection
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/04/2007, 02h37
  3. Problème d'accent lors d'une requête
    Par escape dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/12/2006, 13h48
  4. [JDOM] Problème d'iterateur lors d'une suppression
    Par romuluslepunk dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/01/2006, 15h00
  5. Redirection automatique lors d'une sélection dans un Select
    Par MiJack dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/12/2004, 18h09

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