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 :

ne pas boucler sur activate


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut ne pas boucler sur activate
    Bonjour,

    Je travaille sur un classeur multifeuille,
    et j'ai besoin d'aller chercher des informations d'une feuille à l'autre
    lors d'un traitement.
    A priori pour me positionner dans une autre feuille et prendre des informations je suis obligé d'utiliser Activate.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sheets(cetteFeuille).Activate
    recupere = sheets(cetteFeuille).range("A1")
    Hors je voulais utiliser la commande Activate pour lancer un traitement
    à l'ouverture d'une feuille.
    Je tombe de ce fait dans un probleme d'appel recursif.
    Est il possible d'éviter cet eccueil et comment ?

    D'avance merci de votre réponse.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    A priori pour me positionner dans une autre feuille et prendre des informations je suis obligé d'utiliser Activate.
    Pas du tout !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    recupere = sheets(cetteFeuille).range("A1")

  3. #3
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Je viens d'essayer avec la selection, et chez moi
    le code suivant ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    With Workbooks("ReferentielSuivi")
    .Sheets("ReferentielNom").Range("A:A").Select
    celui là marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With Workbooks("ReferentielSuivi")
    .Sheets("ReferentielNom").Activate
    .Sheets("ReferentielNom").Range("A:A").Select
    y a t'il un probleme propre à la selection ?
    Ca m'aiderait beaucoup de pouvoir disposer de la selection pour
    parcourir ma feuille.

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Pour le select en lui-même vois ceci :
    http://www.developpez.net/forums/sho...91#post3402991

    Pour ce qui est d'une possible solution à ton pb, oui, on peut par exemple mettre en place une variable drapeau (Boolean qui ne prend que vrai ou faux en valeur), du coup quand tu agis via vba tu mets ta variable à Vrai et un filtre empêche le code de l'activate de se lancer, et tu penses à la remettre à faux ensuite...


    exemple de variable drapeau ici :

    http://www.developpez.net/forums/sho...d.php?t=573610

    Pour être plus pertinent, plutôt que de jouer aux questions à tiroir, essayes de préciser comment sont tes données et ce que tu veux en faire ce qui amènera peut-être une solution complètement différente


    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    j'ai ça sous la main. Je ne l'avais pas mis car le select n'est pas utile
    Tu as plusieurs façons de récupérer l'événement activate. Soit dans ThisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     
    End Sub
    Soit dans la feuille de code de la feuille elle-même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
     
    End Sub
    Si tu optes pour la seconde solution, déclare un boolean en Public et teste ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Oui as boolean
    Private Sub Worksheet_Activate()
        oui = not oui
        If oui then
            'ton code
        endif
    End Sub
    Ça, c'est dans l'hypothèse où ton code ne provoque l'événement activate que deux fois...

  6. #6
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par comme de bien entendu
    ....
    y a t'il un probleme propre à la selection ?
    Ca m'aiderait beaucoup de pouvoir disposer de la selection pour
    parcourir ma feuille.
    Bonsoir,

    pour parcourir ta feuille pas besoin de sélection :

    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
     
    Sub JacKouYerie()
    Dim c As Range
    Dim MaPlage As Range
    Dim MonCompteur As Integer
    Set MaPlage = Workbooks("ReferentielSuivi").Sheets("ReferentielNom").Range("A:A")
     
     
    For Each c In MaPlage
       ' ici tu parcours ta plage ... par exemple pour compter les A
       If c.Value = "A" Then MonCompteur = MonCompteur + 1
    Next
     
     
    MsgBox MonCompteur & " A dans ma plage : " & MaPlage.Address
     
    End Sub
    Jacques.
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  7. #7
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Merci bien,

    Je vais utiliser un objet Plage pour parcourir ma feuille plutôt que
    la Selection.
    Faut que je fasse encore des progrés pour connaitre le modele objet
    d'Excel.
    Merci à tous pour vos interventions.

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

Discussions similaires

  1. [XL-2003] Boucler sur les cellules de droites de la ligne active
    Par GarnierFlorian dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 22/11/2010, 13h12
  2. [AC-2003] -ADP- Sur Activation (oncurrent) ne déclenche pas
    Par belu33fr dans le forum Access
    Réponses: 0
    Dernier message: 02/05/2009, 11h17
  3. Ldap sur Active Directory de W2003 avec IpWorks
    Par Gyles2 dans le forum Web & réseau
    Réponses: 2
    Dernier message: 08/10/2004, 11h46
  4. Réponses: 27
    Dernier message: 25/08/2004, 22h30
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

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