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 :

Une procédure pour toutes les feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut Une procédure pour toutes les feuilles
    Bonjour

    Je crée un planning avec chaque semaine dans une nouvelle feuille. La procédure que j'écris concerne toujours la même plage de cellule.
    Au lieu de l'écrire sur chaque feuille, existe-t-il un moyen de la nommer publique et où l'écrire ?

    Merci par avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut docjo et le forum
    Avec autant de renseignements, on va vraiement pouvoir te venir en aide
    Tu peux utiliser un module général pour écrire ta macro, ou, si c'est une macro à lancement automatique, une des macro à lancement automatique du module ThisWorkBook, ou prier, faire appel à un magicien, etc... Ou donner des informations qui pourraient nous faire comprendre le problème!!!
    A+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    Désolé si je n'ai pas été assez explicite.
    Comme j'ai l'habitude sur access j'essai de transposer sur excel mais ça ne marche pas pareil et les tutoriaux ne m'ont pas permis de trouver mon bonheur.

    Je fais un planning et j'essaie de rentrer des règles pour que les personnes ne se retrouvent pas en même temps sur plusieurs postes.

    Voici un exemple:

    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
     
    Public Sub Worksheet_Change(ByVal Target As Range)
     
     
    If WorksheetFunction.CountIf(Range("B11:F20"), "Personne1") > 8 _
    Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne2") > 6 _
    Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne3") > 7 _
    Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne4") > 8 _
    Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne5") > 8 _
    Then
     
    MsgBox "Vous n'avez pas le droit de placer cette personne ici"
        ActiveCell.FormulaR1C1 = ""
    End If
     
    End Sub
    Cette procédure s'applique à la feuille.
    Comment l'appliquer à toutes les feuilles qui auront une semaine différente mais toutes le même design.

    Comment faire un module général ? J'ai essayé de copier dans un module qui se trouve dans le dossier module mais cela ne fonctionne pas. J'ai essayé de copier coller dans thisworkbook mais pareil.
    J'espère avoir été plus clair.

    Merci encore.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut docjo et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub Worksheet_Change(ByVal Target As Range)
     
    If WorksheetFunction.CountIf(Range("B11:F20"), "Personne1") > 8 _
    Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne2") > 6 _
    Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne3") > 7 _
    Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne4") > 8 _
    Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne5") > 8 _
    Then
         MsgBox "Vous n'avez pas le droit de placer cette personne ici"
         ActiveCell.FormulaR1C1 = ""
    End If
    End Sub
    Cette Macro à lancement automatique est liée à la feuille. dans le module explorateur de projet de VBA, en dessous tu as le module ThisWorkBook tu y colles la macro suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If WorksheetFunction.CountIf(Range("B11:F20"), "Personne1") > 8 _
       Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne2") > 6 _
       Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne3") > 7 _
       Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne4") > 8 _
       Or WorksheetFunction.CountIf(Range("B11:F20"), "Personne5") > 8 Then
            MsgBox "Vous n'avez pas le droit de placer cette personne ici"
            ActiveCell.FormulaR1C1 = ""
    End If
    End Sub
    C'est la même macro automatique que Worksheet_Change, mais Sh est une variable système qui renferme la feuille dont une des plages a changé. Target, la plage ayant subit les modifications.
    Je n'ai pas testé la macro.
    Une fois faite, tu peux supprimer la/les macro(s) initiale(s) sur le(s) module(s) lié(s) à l'/aux autre(s) feuille(s).
    A+

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    Mille mercis Gorfael.
    Nulle doute que cette macro marchera: je la teste de suite. si je peux te solliciter une dernière fois, quelle est la différence avec un module qui serait public (si c'est possible) ?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut docjo et le forum
    Les macros automatiques sont liées au modules dans lequel elle sont définies. Dans les modules, dans la case (Générale), tu as les objets qui ont des macros à lancement automatique.
    Les modules généraux ne peuvent pas avoir ces macros.

    Les modules généraux sont ceux qui sont dans le dossier module.
    une macro définie dans un module général peut être utilisée depuis un autre classeur. Elle est "globale" comme une variable déclarée dans un module général.
    A+

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Points : 194
    Points
    194
    Par défaut
    Merci pour toute ton aide Gorfael. J'ai essayé la macro qui marche à merveille. J'aurai surement besoin encore d'aide. J'ai consulté les tutoriaux de developpez. il y a bien un peu d'aide mais beaucoup moins que dans acces. J'essai de m'aider des sources mais là encore, il y a beaucoup de choses complexes mais peu de bases.

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

Discussions similaires

  1. [XL-2010] Un seul code VB pour toutes les feuilles
    Par juan67 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 11/02/2013, 16h45
  2. [XL-2003] Macro ou VB pour toutes les feuilles
    Par jeanphi45 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2011, 10h53
  3. [AC-2003] Modifier une propriété pour toutes les requêtes de la Bd
    Par chordially dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/07/2010, 21h54
  4. Réponses: 3
    Dernier message: 09/05/2010, 23h24
  5. Pb de compil sur une procédure pour killer les sessions d'une base
    Par tibal dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 24/04/2009, 16h42

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