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 :

Similaire a Activate ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut Similaire a Activate ?
    Bonjour,

    J'ai
    un souci
    j'ai fait un code qui se declenche des que l'on se positionne sur une feuille mais qui fat appelle a d'autre feuille que j'active pdt le code.

    Alors le truc c'est que je veux revenir à la premiere feuille mais si je mets un activate je suis dans une boucle sans fin ....
    Comment est ce que je peux faire pr me sortir de là ?

  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
    Par défaut
    Ton code nous serait utile pour comprendre
    Où le places-tu ? (Ça aussi c'est important )

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut
    Alors je vais essayer d'etre clair
    j'ai mon code

    je suis sur la feuille "Indic"

    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_activate()
    Dim pourOk As Double
    Dim j As Integer
    Dim Ligne As Long
    Dim Flag As Boolean
     
    Call tri  ' là je vais activer une autre feuille que celle sur laquelle je suis
    Call tri2 ' là je vais activer une autre feuille encore
     
    Worksheets("Indic").Range("B2", "M9").ClearContents
     
    Ligne = 6
    'etc......
    'et là j'ai besoin de revenir sur la feuille du debut "Indic" mais je peux pas faire
    'de activate sinon le code se relance :cry:
    end sub

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 95
    Par défaut
    est-ce que tu as essayé avec un select plutôt qu'un activate?

    Sinon (mais c'est vraiment pas très propre), est-ce que tu peux mettre une trace dans une cellule donnée de ta feuille pour indiquer que tu ne dois pas lancer le code?? genre
    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_activate()
     
    if A1="" then 'tu remplaces A1 par la cellule dans laquelle tu veux mettre l'info
        'tu viens d'activer pour la première fois ta feuille
        'tout ton code dont tu as besoin
        A1="toto"
        indic.activate
        else
        'c'est à dire que A1 est remplie et que tu dois arrêter ta boucle et que tu
        'es sur la bonne feuille
        A1=""
    end if
     
    end sub
    Faut récrire le code de façon un peu plus propre mais tu vois l'idée?

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut
    Que je fasse select ou activate ca relance mon code quand meme
    tu veux bien dire select a la fin de mon code pr revenir sur la feuille de depart c'est bien ça ?
    la 2eme methode pas possible

    Je veux revenir pour voir ce qui as été fait sur cette feuille!
    le etc qu'il y a dans mon code c'est des actions qui sont faiate sur cette feuille et en l'occurence là elle ne sont pas visble puisque je reste indefiniment sur la 2eme feuille qui a été activé au debut

    ou alors il faudrait que je travaille sur les autres feuilles sans les activer ou les selectionner comme ça ma feuille du debut restera visible
    je peux faire ça

    ouskel nor
    d'accord mais mon but actuelle c'est de revenir sur cette feuille

    si je ne la selectionne pas alors je fais comment pr revenir dessus ??????

    ou sinon est ce qu'il m'est possible d'effectuer des modif sur une feuille sans aller dessus?

    PARCE QU4EN FAITE QUAND je call tri je selectionne une autre feuille
    et c'est là le pb
    dc il faudrait que je puisse travailler desuus sans "etre" dessus
    c'est possible ?

    Oui j'ai lu et j'ai repondu

    Citation Envoyé par titeZ Voir le message
    Je veux revenir pour voir ce qui as été fait sur cette feuille!
    le etc qu'il y a dans mon code c'est des actions qui sont faiate sur cette feuille et en l'occurence là elle ne sont pas visble puisque je reste indefiniment sur la 2eme feuille qui a été activé au debut
    dés l'activation d'une feuille ( private sub worksheet_activate) j'ai des chose a effectuer dessus mais j'ai besoin d'effectuer des modifs sur d'autres feuilles ( call tri et tri2 ( qui selectionne dc d'autre feuilles) maintenant il faut que je vois ce qui a été fait sur la feuille du debut....

  6. #6
    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
    Par défaut
    pourquoi veux-tu "revenir" sur la feuille du début ? On n'est jamais obligé de sélectionner une feuille

    Edit
    En l'occurence, puisque tu es dans le code de ta feuille, ta feuille est "Activesheet"

    Edit 2
    J'ajoute que si tu es dans le code d'une feuille de calculs, il n'est jamais bon de sélectionner une feuille dans ton code... ça fout le bouzou !

    ou sinon est ce qu'il m'est possible d'effectuer des modif sur une feuille sans aller dessus?
    Non seulement c'est possible mais c'est nécessaire s'il s'agit d'une autre feuille. Je ne sais pas ce que font tes Call .... mais si dans leur code tu sélectionnes une autre feuille, c'est pas bon.
    On peut toujours de passer de sélectionner feuille ou cellule en nommant la feuille et le range.
    Et si tu fais ça, comme je t'ai dit, avec Private Sub worksheet_activate() la feuille active reste ActiveSheet.

    Bon, je vais grouper mes messages sinon je vais passer les 7000 avant ce soir, ne sois pas étonné si tu ne les retrouves pas là où tu les cherches

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut
    C'est possible ?
    mERVEIILLEUX Mais comment ?

    Voila ce que font mes call


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub tri()
    Worksheets("pack").Select
       Range("A6").CurrentRegion.Sort Key1:=Range("AC6"), Order1:=xlDescending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
    End Sub
    Sub tri2()
     
    Worksheets("evt").Select
      Range("A6").CurrentRegion.Sort Key1:=Range("AC6"), Order1:=xlDescending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End Sub
    comment je peux faire alors ? en nommant la feuille ou le range ??? Comment ça ? je ne comprend pas

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour à tous
    essaies cette syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With worksheets("pack")
    
     .[FONT=Arial]Range("A6").CurrentRegion.Sort Key1:=.Range("AC6")
    
    end with[/FONT]

  9. #9
    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
    Par défaut
    Tu peux juste modifier un peu ton code et c'est tout bon
    Citation Envoyé par titeZ
    C'est possible ?
    mERVEIILLEUX Mais comment ?

    Voila ce que font mes call
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub tri()
    Worksheets("pack").Range("A6").CurrentRegion.Sort Key1:=Worksheets("pack").Range("AC6"), Order1:=xlDescending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
    End Sub
    Sub tri2()
     
    Worksheets("evt").Range("A6").CurrentRegion.Sort Key1:=Worksheets("evt").Range("AC6"), Order1:=xlDescending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End Sub
    Je n'ai pas testé, possible que le second Worksheets(....) dans
    Worksheets("pack").Range("AC6") et dans Worksheets("evt").Range("AC6") ne soit pas nécessaire pour key1:= ... Bref, tu peux tester pour moi ?
    A+

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut
    non, si je ne suis pas sur la feuille pack et ensuite evt ça ne passe pas

  11. #11
    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
    Par défaut
    Tu m'étonnes beaucoup, ce doit être une erreur de syntaxe de ma part. Je m'y colle...

    Pendant que je te tiens, as-tu regardé ma dernière réponse, , qu'au moins elle serve à quelque chose
    A+

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut
    oui j'ai regardé
    mais a partir du moment ou je ne suis pas sur la feuille le tri ne fonctionne pas

  13. #13
    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
    Par défaut
    Je jète l'éponge. Il semblerait bien que tu aies raison. J'ai réussi à le faire fonctionner une fois mais n'ayant pas réussi à le reproduire, je pense que j'ai trié la feuille active, non la feuille souhaitée.
    Donc, on va trouver une solution.
    Déclare un boolean en public là ou tu mets tes deux macros
    Dans la macro liée à ta feuille, mets ça
    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_activate()
    Dim pourOk As Double
    Dim j As Integer
    Dim Ligne As Long
    Dim Flag As Boolean
    If Not Ok Then
        tri  ' là je vais activer une autre feuille que celle sur laquelle je suis
        tri2 ' là je vais activer une autre feuille encore
    End If
    If Ok Then Worksheets("Feuil1").Select
    Worksheets("Feuil3").Range("B2", "M9").ClearContents
    ActiveSheet.Range("A1").Value = "coucou"
    End Sub
    Ça, je viens de le tester, c'est ok pour moi.
    Ouf !

    PS - Après 10 ans, j'ai encore appris que certaines évidences n'étaient pas aussi évidentes que ça re

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Je confirme les dires d'Ouskel'n'or et de Michel.

    En reprenant la feuille comme objet parent des plages utilisées lors du tri, celui-ci s'effectue bien, et c'est heureux!!, sur la feuille renseignée, que celle-ci soit active ou non


    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
    21
    22
     
    Sub Tri1()
        Dim Feuille As Worksheet
     
        Set Feuille = Worksheets("Feuil1")
        Feuille.Range("a1").CurrentRegion.Sort key1:=Feuille.Range("a1"), order1:=xlAscending, key2:=Feuille.Range("b1"), header:=xlYes
     
    End Sub
     
    Sub Tri2()
        Dim Feuille As Worksheet
     
        Set Feuille = Worksheets("Feuil2")
        Feuille.Range("a1").CurrentRegion.Sort key1:=Feuille.Range("b1"), order1:=xlAscending, key2:=Feuille.Range("a1"), header:=xlYes
     
    End Sub
     
     
    Sub Trier()
        Tri1
        Tri2
    End Sub
    Je serais donc tenté de dire que si cela ne fonctionne pas, c'est qu'il y a un problème dans le code utilisé.

    Pourrait-on l'avoir en entier?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Par défaut
    Pierre, non tu ne confirmes pas les dires d'ouskel'n'or alors

    En faite ce qu'il y a c'est que je ne lance pas ça d'un sub trier comme tu l'as fait mais d'un worksheet activate depuis une 3eme feuille

    essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Private Sub worksheet_activate()
        Tri1
        Tri2
    End Sub

    Tu vas voir que la ca marche moins bien

Discussions similaires

  1. Fonction qui s'active lorsqu'un Form bouge
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/05/2003, 13h54
  2. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 13h01
  3. Tester connexion Internet active sous Windows
    Par Altau dans le forum Développement
    Réponses: 3
    Dernier message: 12/08/2002, 13h43
  4. [Kylix] Clé d'activation
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 28/03/2002, 00h19

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