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 :

Exécution macro sélection feuille [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Points : 49
    Points
    49
    Par défaut Exécution macro sélection feuille
    Bonjour,

    Je vous sollicite car j'ai un souci sur une macro.

    Je veux que ma macro s'exécute lorque l'utilisateur sélectionne la feuille RECAP. La macro met à jour en premier lieu une autre feuille qui s'appelle GLOBAL et ensuite met à jour la feuille RECAP.

    Seulement voilà, j'ai mis ma macro dans Worksheet_Activate, mais comme prévu elle plante lorsque ça passe sur l'autre feuille, c'est à dire dès la 1ère ligne. Avec comme message d'erreur :

    Erreur d'exécution '-2147417847 (80010108)' :
    La méthode 'Range' de l'objet '_Worksheet' a échoué
    Avez-vous une solution permettant de lancer ma macro quand l'utilisateur sélectionne la feuille RECAP, sans passer par Worksheet_Activate ?

    Merci par 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Private Sub Worksheet_Activate()
     
        Application.ScreenUpdating = False
     
        'mise en place des formules sur la feuille GLOBAL
        Sheets("GLOBAL").Range("P2").FormulaR1C1 = _
            "=IFERROR(IF(AND(RC[1]=TODAY(),RC[3]=""""),""1e relance"",IF(AND(RC[2]=TODAY(),RC[4]=""""),""2e relance"","""")),"""")"
        Sheets("GLOBAL").Range("S2").FormulaR1C1 = _
            "=IFERROR(IF(RC[-2]=TODAY(),IF(VLOOKUP(RC[3],BDD!C[-18]:C[-16],3,FALSE)=""OK"",RC[-2],""""),""""),"""")"
        Sheets("GLOBAL").Range("T2").FormulaR1C1 = _
            "=IFERROR(IF(RC[-2]=TODAY(),IF(VLOOKUP(RC[2],BDD!C[-19]:C[-17],3,FALSE)=""OK"",RC[-2],""""),""""),"""")"
        Sheets("GLOBAL").Range("U2").FormulaR1C1 = _
            "=IFERROR(IF(VLOOKUP(RC[1],BDD!C[-20]:C[-18],3,FALSE)=""OK"",VLOOKUP(RC[1],BDD!C[-20]:C[-17],4,FALSE),""""),"""")"
     
        'tire les formules vers le bas
        Sheets("GLOBAL").Range("P2").AutoFill Destination:=Sheets("GLOBAL").Range("P2:P" & Application.WorksheetFunction.CountA(Sheets("GLOBAL").Range("A:A")))
        Sheets("GLOBAL").Range("S2:U2").AutoFill Destination:=Sheets("GLOBAL").Range("S2:U" & Application.WorksheetFunction.CountA(Sheets("GLOBAL").Range("A:A")))
     
        Sheets("GLOBAL").Calculate
     
        'copie colle en valeur les résultats des formules
        Sheets("GLOBAL").Range(Sheets("GLOBAL").Rows("2:2"), Sheets("GLOBAL").Rows("2:2").End(xlDown)).Copy
        Sheets("GLOBAL").Range(Sheets("GLOBAL").Rows("2:2"), Sheets("GLOBAL").Rows("2:2").End(xlDown)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
        'mise en place des formules sur la feuille RECAP
        Sheets("RECAP").Range("D9").FormulaR1C1 = _
            "=COUNTIFS(GLOBAL!C[2],RECAP!RC[-1],GLOBAL!C[12],""1e relance"")+COUNTIFS(GLOBAL!C[2],RECAP!RC[-1],GLOBAL!C[12],""2e relance"")"
        Sheets("RECAP").Range("G9").FormulaR1C1 = _
            "=COUNTIFS(GLOBAL!C[-1],RECAP!RC[-1],GLOBAL!C[9],""1e relance"",GLOBAL!C[8],""TEL"")+COUNTIFS(GLOBAL!C[-1],RECAP!RC[-1],GLOBAL!C[9],""2e relance"",GLOBAL!C[8],""TEL"")"
        Sheets("RECAP").Range("J9").FormulaR1C1 = _
            "=COUNTIFS(GLOBAL!C[-4],RECAP!RC[-1],GLOBAL!C[6],""1e relance"",GLOBAL!C[5],""FAX"")+COUNTIFS(GLOBAL!C[-4],RECAP!RC[-1],GLOBAL!C[6],""2e relance"",GLOBAL!C[5],""FAX"")"
     
        'tire les formules vers le bas
        Sheets("RECAP").Range("D9").AutoFill Destination:=Sheets("RECAP").Range("D9:D" & Application.WorksheetFunction.CountA(Sheets("TEMP").Range("D:D")) + 7)
        Sheets("RECAP").Range("J9").AutoFill Destination:=Sheets("RECAP").Range("J9:J" & Application.WorksheetFunction.CountA(Sheets("TEMP").Range("F:F")) + 7)
        Sheets("RECAP").Range("G9").AutoFill Destination:=Sheets("RECAP").Range("G9:G" & Application.WorksheetFunction.CountA(Sheets("TEMP").Range("H:H")) + 7)
     
        Sheets("RECAP").Calculate
     
        'copie colle en valeur les résultats des formules
        Sheets("RECAP").Range(Sheets("RECAP").Rows("9:9"), Sheets("RECAP").Rows("9:9").End(xlDown)).Copy
        Sheets("RECAP").Range(Sheets("RECAP").Rows("9:9"), Sheets("RECAP").Rows("9:9").End(xlDown)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
     
        Range("A1").Select
     
        'remise en place des formules
        Sheets("GLOBAL").Range("W2").FormulaR1C1 = "=IF(LEN(MENU!R7C4)*(RC[-1]=MENU!R7C4)>0,ROW(),"""")"
     
        'retire les formules vers le bas
        Sheets("GLOBAL").Range("W2").AutoFill Destination:=Sheets("GLOBAL").Range("W2:W" & Application.WorksheetFunction.CountA(Sheets("GLOBAL").Range("A:A")))
        Sheets("GLOBAL").Calculate
     
    End Sub

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    perosnnelemnt j'utilise Sheets("Feuil3").Select
    pour me placer sur la feuille voulu

    en gros cela pourrai donner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sheets("GLOBAL").Select
    Range("P2").FormulaR1C1 = _
            "=IFERROR(IF(AND(RC[1]=TODAY(),RC[3]=""""),""1e relance"",IF(AND(RC[2]=TODAY(),RC[4]=""""),""2e relance"","""")),"""")"
     
    .
    .
    .
    Sheets("RECAP").Select
    Range("D9").FormulaR1C1 = _
    "=COUNTIFS(GLOBAL!C[2],RECAP!RC[-1],GLOBAL!C[12],""1erelance"")+COUNTIFS(GLOBAL!C[2],RECAP!RC[-1],GLOBAL!C[12],""2e relance"")"
    a voir si cela fonctionne pour ton cas

  3. #3
    Membre du Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Points : 49
    Points
    49
    Par défaut
    Bonjour Antoninr,

    Merci pour ta réponse.

    Le problème c'est que comme je suis dans Sub Worksheet_Activate(), si je change de feuille la feuille principale n'est plus active et le programme ne comprend pas. En mettant .select le problème est toujours présent.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    effectivement je n'avais pas compris ton problème.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    As-tu des macros événementielles dans ta feuille GLOBAL?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre du Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Désolé de cette réponse tardive j'étais en congé.

    Non je n'ai pas de macros événementielles dans la feuille GLOBAL. J'ai 3 macros événementielles dans mon fichier : 1 pour la feuille RECAP quand elle est sélectionnée (le sujet du post), 1 à l'ouverture du fichier, 1 à la fermeture du fichier.

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Je viens d'essayer de reproduire l'erreur par différents moyens mais je n'y arrive pas.

    Désolé...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Membre du Club
    Homme Profil pro
    Dataminer
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Dataminer

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Points : 49
    Points
    49
    Par défaut
    Finalement, j'ai abandonné l'idée de mettre ma procédure dans un Worksheet_Activate. J'ai mis ma procédure dans une macro classique que j'appelle avec un bouton style "raffraichir". Et ça fonctionne.

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

Discussions similaires

  1. Exécution Macro VBA et actualisation des feuilles
    Par DjJEJ83 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/07/2007, 10h08
  2. protection feuille + exécuter macros
    Par Fab_nabou dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 04/12/2006, 11h14
  3. Exécution Macro Excel à partir d'Access
    Par SylvainJ dans le forum Access
    Réponses: 1
    Dernier message: 11/08/2006, 14h58
  4. [VBA-E]Lancement macro ouverture Feuille
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 08/06/2006, 20h31
  5. [VBA][Excel]Exécution macro avec fichiers source
    Par ouezon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/12/2005, 00h00

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