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 :

Pb worksheet deactivate [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mai 2015
    Messages : 7
    Par défaut Pb worksheet deactivate
    Bonjour
    Je suis débutant en VBA et Je rencontre un problème, je souhaite exécuter du code lors du basculement vers une autre feuille, mais impossible de quitter la feuille "Filtre_RFC" pour laquelle j'ai crée l'évènement suivant, où est mon erreur ?
    Merci d'avance

    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
    Private Sub Worksheet_Deactivate()
        If erreur = "1" Then
            MsgBox "Anomalie dans la feuille Filtre_RFC !", , "Attention"
            Me.Select
        Else
            Me.Select
            Range("A2").Select
            For i = 1 To 19
            If ActiveCell = "" And ActiveCell.Offset(0, 1) = "" Then
                ActiveCell.EntireRow.Delete
            End If
            ActiveCell.Offset(1, 0).Select
            Next
        End If
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Me représente la feuille.

    La commande
    Me.Select
    signifie Réactive-moi.

  3. #3
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mai 2015
    Messages : 7
    Par défaut
    Merci pour votre réponse mais si j'enlève l'instruction Me.select j'obtiens une erreur "1004" !

    Nom : 18-11-2015 17-06-53.jpg
Affichages : 611
Taille : 66,4 Ko

    Comment faire pour exécuter ce code si je ne suis plus dans la feuille active ?

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Comme ceci:

    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
    Private Sub Worksheet_Deactivate()
    If erreur = "1" Then
    MsgBox "Anomalie dans la feuille Filtre_RFC !", , "Attention"
    Me.Select
    Else
     
    Set r = Me.Range("A2")
    For i = 19 To 1 Step -1
    Set c = r.Offset(i)
    If c = "" And c.Offset(0, 1) = "" Then
    c.EntireRow.Delete
    End If
     
    Next
    End If
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mai 2015
    Messages : 7
    Par défaut
    Merci Docmarti, cela fonctionne mais j'ai pas bien compris à quoi corresponde les variables "c" et "r"
    A bientôt

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    C'est que je suis paresseux. Plutôt que de taper et retaper Me.Range("A2") dans le code, je crée l'objet r qui réfère à l'objet Me.Range("A2"). Je peux donc remplacer Me.Range("A2") par r partout dans le code. C'est plus rapide de taper r que de taper Me.Range("A2") et le code est plus facile à lire.

    Mais tu peux écrire le code comme ceci si tu préfères :

    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
    Private Sub Worksheet_Deactivate()
    If erreur = "1" Then
    MsgBox "Anomalie dans la feuille Filtre_RFC !", , "Attention"
    Me.Select
    Else
     
    For i = 19 To 1 Step -1
     
    If Me.Range("A2").Offset(i) = "" And Me.Range("A2").Offset(i).Offset(0, 1) = "" Then
    Me.Range("A2").Offset(i).EntireRow.Delete
    End If
     
    Next
    End If
    End Sub
    En passant, tu pourrais remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Range("A2").Offset(i).Offset(0, 1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Range("A2").Offset(i,1)
    Les deux sont équivalents.

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

Discussions similaires

  1. Deactiver une Icon de la bar de tache?
    Par Soulama dans le forum Langage
    Réponses: 11
    Dernier message: 17/02/2006, 12h30
  2. [vb excel] Problemen methode Deactivate.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/11/2005, 21h06
  3. [TForm.Deactivate] Ne se declenche pas !
    Par kase74 dans le forum Débuter
    Réponses: 15
    Dernier message: 23/06/2005, 16h03
  4. Réponses: 2
    Dernier message: 19/11/2004, 08h54
  5. Réponses: 2
    Dernier message: 17/11/2004, 10h50

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