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 :

Executer une macro sur une feuille [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut Executer une macro sur une feuille


    Lors de l'ouverture d'un fichier Excel, j'ai une macro qui regrouppe les données de deux autre fichiers Excel sur deux feuilles différentes (une par fichier importé)

    A la fin de l'execution de cette macro, je voudrais lancer une autre macro sur une des deux fuilles.

    Je sais pas comment faire pour que ma seconde macro soit affilié à simplement une des deux feuilles

    HELP !!

    Merci

  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
    Déjà, (s'il s'agit bien de l'écriture d'une macro par macro dans la feuille de code d'une feuille de calculs, vue par le passé) depuis le code d'une feuille de calculs tu ne peux lancer qu'une macro placée dans un module standard.
    "Sur l'autre feuille" n'est pas un problème si tu connais le nom de cette "autre feuillle" Il te suffit de la nommer dans ton code.
    Bonne journée

    NB - Pas de Help dans tes messages

    PS - Ton avatar est affreux ! Pour le modifier tu vas dans "Messages personnels

  3. #3
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut
    Voici la macro que je veu qui s'applique a une feuille
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    Sub MiseEnForme()
    '
    ' supprimer lignes négatives Macro
    ' Macro enregistrée le 06/07/2009 par st22296
    '
    ' Touche de raccourci du clavier: Ctrl+k
    '
     
    '****** effacer couleur jaunasse
    Range("A2:K1000").Select
    Selection.Interior.ColorIndex = xlNone
    '******
    Dim LigneTrackNegatif As Long
    LigneTrackNegatif = 2
    Do While LigneTrackNegatif <= 1000 And Cells(LigneTrackNegatif, 15).Value <> ""
        If Cells(LigneTrackNegatif, 15).Value < 0 Then
            Rows(LigneTrackNegatif).Delete
        End If
    LigneTrackNegatif = LigneTrackNegatif + 1
    Loop
    '************** effacer colonnes inutiles
    Range("A:A,B:B,M:M,O:O").Select
    Selection.Delete
     
    '*************effacer les lignes sans OF
    Dim LigneTrackPasOF As Long
    LigneTrackPasOF = 2
    Do While LigneTrackPasOF <= 1000
        If Cells(LigneTrackPasOF, "A").Value = "" Then
            Rows(LigneTrackPasOF).Delete
        End If
    LigneTrackPasOF = LigneTrackPasOF + 1
    Loop
    '*************************
    '********** insérer colonne commentaire et priorité
    'Range("M1").Select
    'ActiveCell.FormulaR1C1 = "priorité"
    'Range("N1").Select
    'ActiveCell.FormulaR1C1 = "commentaire"
    Range("M1").FormulaR1C1 = "Commentaire"
    Range("M1").Value = "Commentaire"
    Range("N1").FormulaR1C1 = "Priorité"
    Range("N1").Value = "Priorité"
    '*************************
    '********** insérer dans colonne commentaire "Sans délais"
    ' si date prévue = VIDE ou =31/12/9999
    Dim LigneTrackSansDelais As Long
    LigneTrackSansDelais = 2
    Do While LigneTrackSansDelais <= 1000
        If Cells(LigneTrackSansDelais, "L").Value = "" Or Cells(LigneTrackSansDelais, "L").Value = "31/12/9999" Then
            Cells(LigneTrackSansDelais, "M").Value = "Sans Délais"
        End If
    LigneTrackSansDelais = LigneTrackSansDelais + 1
    Loop
    '*************************
    '********** insérer dans colonne commentaire "Délais dépassé"
    ' si date prévue <= date du jour
    Dim LigneTrackDelaisDepasse As Long
    Dim MyDate
    LigneTrackDelaisDepasse = 2
    Do While LigneTrackDelaisDepasse <= 1000
        'MyDate = Cells(LigneTrackDelaisDepasse, 12).DateValue
        If Cells(LigneTrackDelaisDepasse, 12) <= Date And Cells(LigneTrackDelaisDepasse, 12) <> "" Then
            Cells(LigneTrackDelaisDepasse, 13).Value = "Délais dépassé"
        End If
    LigneTrackDelaisDepasse = LigneTrackDelaisDepasse + 1
    Loop
    '*************************
    '******************** insérer 4 lignes en haut de la feuille
    For i = 1 To 4
    Rows(1).Insert
    Next i
    '*************************
    '******************** insérer une légende pour les priorités
    '* Besoin URGENT = "priorité 1" F2
    Range("F2:G2").Select
    Selection.Interior.ColorIndex = 38 '**** rose
    Range("F2").Select
    ActiveCell.FormulaR1C1 = "* Besoin URGENT = 'priorité 1'"
    '* En attente sur avion = " priorité 2" (pourrait devenir urgent) F3
    Range("F3:G3").Select
    Selection.Interior.ColorIndex = 35 '**** vert
    Range("F3").Select
    ActiveCell.FormulaR1C1 = "* En attente sur avion = 'priorité 2' (pourrait devenir urgent)"
    '************************* insérer FILTRE AUTO
    Range("A5:N5").Select
    Selection.AutoFilter
    '************************* mettre couleur (doré) titre colonnes
    Range("A5:N5").Select
    Selection.Interior.ColorIndex = 12
     
    End Sub
    Je voudrais mettre un truc du style : "appliquer cette macro a la feuille dant la cellule A est "Machin"

    PS - Por l'avatar t'inquiete pas je vais le changer mais laa j'ai pas la temps

  4. #4
    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
    Pas compris ton problème mais déjà, si tu utilises FormulaR1C1 (ex. : Range("M1").FormulaR1C1 = "Commentaire", ça ne rime à rien. Jète un oeil dans l'aide à
    FormulaR1C1.
    Tu pourrais utiliser un tas de chose mais pas ça. Text, Value, formula tout court... mais pas FormulaR1C1
    En l'occurence, Range("M1")= "Commentaire" suffirait
    Corrige ton code et reviens-nous

    NB - Pour l'avatar, si tu manques d'inspiration, je suis sûr que tu trouveras de nombreux volontaires pour t'en proposer un. Le tien est vraiment trop horrible

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    tu pourrais mettre ta feuille à traiter en argument à ta macro..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub MiseEnForme(Wks As Worksheet)
        Wks.Select
        '..... code
        '..............
        '..............
    End Sub
    et ça sert à quoi ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("M1").FormulaR1C1 = "Commentaire"
    Range("M1").Value = "Commentaire"
    Range("N1").FormulaR1C1 = "Priorité"
    Range("N1").Value = "Priorité"
    Ces deux lignes suffiront
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("M1") = "Commentaire"
    Range("N1") = "Priorité"
    A+

  6. #6
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    tu pourrais mettre ta feuille à traiter en argument à ta macro..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub MiseEnForme(Wks As Worksheet)
        Wks.Select
        '..... code
        '..............
        '..............
    End Sub
    Le problème c'est comment je peu choisir a quelle feuille j'applique la macro.
    Dans le code, il y a des lignes qui suppriment des colonnes et je ne voudrais pas que sa en supprime sur des feuilles qui n'en on pas besoin.

    C'est pourquoi, je voudrais un truc du style :
    Appliquer la macro "MiseEnForme" à la feuille dont la cellules "A1" = "Truc"

    Je sais pas si c'est possible mais je pense que oui mais je sais pas comment faire (je suis un peu naze )


    PS - J'espère que mon avatar va mieux plaire même si il est pas génial

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    une façon de faire:
    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
    Sub MiseEnForme(Truc As Variant)
    Dim Wks As Worksheet
        For Each Wks In ActiveWorkbook.Worksheets
            If Wks.Range("A1") = Truc Then
                Wks.Activate
                GoTo Passe
            Exit For
        Next Wks
        MsgBox "Pas trouver de cellule A1 avec " & Truc
        Exit Sub
    Passe:
        'Faire la macro
        '........
    End Sub
     
    Sub ExempleAppel()
        MiseEnForme "A trouver"
    End Sub
    A+

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

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. [XL-2007] utiliser une macro sur plusieurs feuilles
    Par revans dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/06/2012, 14h20
  3. [XL-2007] Exécuter une macro sur plusieurs feuilles
    Par formabox dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 26/03/2012, 18h22
  4. Comment annuler les effets d'une macro sur les feuilles?
    Par jolzeviking dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/06/2008, 14h29
  5. [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Par tchauviere dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/01/2008, 10h21

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