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 :

code qui fonctionne dans un module mais pas dans un évènement [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut code qui fonctionne dans un module mais pas dans un évènement
    Bonjour à tou(te)s
    J'ai écris, non sans mal vu mon niveau en vba, un code qui ajoute des colonnes à un tableau sur une autre feuille en fonction du contenu d'une colonne dans un premier tableau.
    Je l'ai d'abord conçu dans un module le temps de le mettre au point. Ça marche. Maintenant je veux que ça se déclenche quand je quitte la feuille. J'ai donc copier/coller le code dans un événement Worksheet_Deactivate et là rien ne va plus.Erreur d’exécution '1014 : La méthode 'Range' de l'objet '_Worksheet' a échoué. Et bien sûr j'ai besoin d'aide pour comprendre...
    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
     
    Private Sub Worksheet_Deactivate() ' dans l'événement
    'Sub transfertAP() ' dans le module
    ' Création des APs dans la feuille élèves
        Sheets("liste_AP").Name = "liste_AP"
        dernLigne = Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To dernLigne
            If Range("A" & i).Value <> "" Then
                Valeur_Cherchee = "AP" & Range("A" & i).Value
                Set PlageDeRecherche = Sheets("eleves").Rows(1)
                Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
                If Trouve Is Nothing Then
                    Range("eleves").ListObject.ListColumns.Add.Name = Valeur_Cherchee
                End If
            End If
    'vidage des variables
        Set PlageDeRecherche = Nothing
        Set Trouve = Nothing
        Next
    End Sub
    La seule différence c'est l’entête "Sub transfertAP()" ou "Private Sub Worksheet_Deactivate()" et l'endroit où il se trouve
    merci pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    Il manques toutes tes déclarations de variables.
    A+

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Citation Envoyé par yalehaire Voir le message
    Ça marche
    ceci fonctionne dans ton module ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("eleves").ListObject.ListColumns.Add.Name = Valeur_Cherchee

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut
    Dans le module standard tout fonctionne parfaitement (du moins pour le moment).
    En effet il manque les déclarations mais pour autant que je saches ça n'est pas indispensable même si c'est plus propre et plus performant. Je m'en occuperai quand j'aurai fini de triturer le code...
    A tout hasard j'ai ajouté les déclarations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Trouve As Range, PlageDeRecherche As Range
    Dim Valeur_Cherchee As String, AdresseTrouvee As String
    Ca ne change rien

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Citation Envoyé par yalehaire Voir le message
    Dans le module standard tout fonctionne parfaitement (du moins pour le moment).
    En effet il manque les déclarations mais pour autant que je saches ça n'est pas indispensable même si c'est plus propre et plus performant. Je m'en occuperai quand j'aurai fini de triturer le code...
    J'ai testé ton code; il ne fonctionne pas même en module standard.

    Tout programme doit reposer sur une balise solide et délimitée; c'est une des clés de la réussite = déclaration des variables. Ceci montre que tu as réfléchi à tous le tenants et aboutissants.

    A+

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut
    Pourtant je te garanti que chez moi il fonctionne, sinon je n'aurais pas ouvert ce topic

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    1/ Que souhaites-tu faire avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("eleves").ListObject.ListColumns.Add.Name = Valeur_Cherchee
    exactement ? On va essayer de reformuler le code.
    2/ As-tu une cellule nommée "eleves" dans ton classeur ?

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

Discussions similaires

  1. Script qui fonctionne dans un onglet mais pas dans un popup
    Par lwolf dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/08/2012, 20h13
  2. Code qui fonctionne depuis un module mais pas depuis un workbook
    Par Gualino dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2011, 18h48
  3. Réponses: 11
    Dernier message: 09/09/2010, 02h53
  4. [RegEx] Regex qui fonctionne dans un preg_replace mais pas dans un ereg
    Par méphistopheles dans le forum Langage
    Réponses: 4
    Dernier message: 31/03/2007, 11h56
  5. Applet qui s'execute dans un dossier mais pas dans l'autre
    Par Battosaiii dans le forum Applets
    Réponses: 11
    Dernier message: 10/12/2005, 15h54

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