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 :

Un seul code pour toutes les feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Un seul code pour toutes les feuilles
    Bonjour,

    Actuellement j'utilise ce code que j'ai copié dans chacune des feuilles de calcul. J'aimerai avoir un seul code, sous la forme d'un module, qui me sert pour toutes les feuilles. Les feuilles commençant par un "L" sont activées à partir d'un UF (UFEngt) et d'un Combo (CmbListCred).
    Pouvez-vous m'apporter votre aide s'il vous plait ? 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
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'On Error GoTo fin
     
    If Not Intersect([A12:A39], Target) Is Nothing Then
        Dim FNew As Worksheet, Wb As Workbook, Sh As Worksheet
        Const Cible As String = "F24"
        Set Wb = ThisWorkbook
     
    On Error Resume Next
        Set FNew = Wb.Worksheets(Cible)
    On Error GoTo fin
        If Not FNew Is Nothing Then
            FNew.Activate
            FNew.Visible = True
        Else
            GoTo fin
        End If
     
    ' on masque les feuilles
        For Each Sh In Wb.Worksheets
            If FNew.name <> Cible Then
            If FNew.name <> "L24" Then
               FNew.Visible = xlSheetVeryHidden
            End If
        End If
        Next Sh
     
        FNew.Cells((Target.Value - 1) * 41 + 2, 3).Select
        'Application.GoTo reference:=
        End If
     
        FNew.Rows("1:1185").Hidden = True
            FNew.Range(FNew.Cells((Target.Value - 1) * 41 + 2, 3), FNew.Cells((Target.Value - 1) * 41 + 1 + 38, 3)).EntireRow.Hidden = False
            FNew.Cells((Target.Value - 1) * 41 + 2, 3).Select
    fin:
        Set FNew = Nothing: Set Wb = Nothing: Set Sh = Nothing
     
     
    End Sub

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour.

    Il aurait fallu commencer directement dans le module ThisWorkbook

    Ouvrir donc le code de ce module puis au dessus à la place de General sélectionner par la flèche WorkBook
    ce qui donne pour code l'évènement Workbook_Open() (si pas déjà créé)
    puis à droite à la place d'Open sélectionner SheetBeforeDoubleClick
    qui a juste comme paramètre supplémentaire Sh concernant la feuille …

    Ensuite restera à y recopier le code puis à effacer l'évènement dans chacune des feuilles …
    (Effacer aussi l'Open si pas déjà utilisé)



    _______________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour Marc-L et merci pour votre réponse. Mais j'ai du mal à comprendre comment le code pourra faire le lien entre la feuille choisie et la fiche qui y est liée.
    Par exemple : Je choisis la feuille L343, comment se fait le lien avec la fiche F343, au moment du double-click ?

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Justement via Sh représentant donc la feuille déclenchant l'évènement … (Sh.Name par exemple)


    ________________________________________________________
    A celle qui dit que les hommes sont tous pareils, lui répondre qu'il ne fallait pas tous les essayer !

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Ah ok, je n'avais pas compris.
    Merci

    J'ai fait ce code mais ça ne fonctionne pas. Pouvez-vous me dire ce que j'ai mal fait ? 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
     
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    'On Error GoTo fin
     
    If Not Intersect([A12:A39], Target) Is Nothing Then
        Dim FNew As Worksheet, Wb As Workbook
        Dim NumLig As String
        NumLig = Cells("D5").Value
        Const Cible As String = ("F" & NumLig)
        Set Wb = ThisWorkbook
    Set Sh = ThisWorkbook.Sheets("L" & NumLig)
    Sh.Activate
     
    On Error Resume Next
        Set FNew = Wb.Worksheets(Cible)
    On Error GoTo fin
        If Not FNew Is Nothing Then
            FNew.Activate
            FNew.Visible = True
        Else
            GoTo fin
        End If
     
    ' on masque les feuilles
        For Each Sh In Wb.Worksheets
            If FNew.name <> Cible Then
            If FNew.name <> ("L" & NumLig) Then
               FNew.Visible = xlSheetVeryHidden
            End If
        End If
        Next Sh
     
        FNew.Cells((Target.Value - 1) * 41 + 2, 3).Select
        'Application.GoTo reference:=
        End If
     
        FNew.Rows("1:1185").Hidden = True
            FNew.Range(FNew.Cells((Target.Value - 1) * 41 + 2, 3), FNew.Cells((Target.Value - 1) * 41 + 1 + 38, 3)).EntireRow.Hidden = False
            FNew.Cells((Target.Value - 1) * 41 + 2, 3).Select
    fin:
        Set FNew = Nothing: Set Wb = Nothing: Set Sh = Nothing
     
     
    End Sub

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour nec14

    tu travaille pas a l'economie toi

    regarde ca
    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
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
        If Not Intersect([A12:A39], Target) Is Nothing Then
            Dim FNew As Object, Wb As Workbook, NumLig As Variant
            Dim cible As String    'je change la constante en variable string
            NumLig = Sheets(1).Range("D5")
            cible = ("F" & NumLig)
            Set Wb = ThisWorkbook
     
            'ici tu active le sheets "L" et numlig pourquoi puisque tu va ensuite avtiver l'autre
            Set Sh = Wb.Sheets("L" & NumLig)
            Sh.Activate
            'et ici maintenant tu active le sheets "F" et numlig
            'heu..... a quoi ca sert??????
     
            ' on masque les feuilles
            For Each Sh In Wb.Worksheets
                If Sh.Name <> cible And Sh.Name <> ("L" & NumLig) Then Sh.Visible = xlSheetVeryHidden
                If Sh.Name = cible Then
                    Set FNew = Wb.Sheets(cible): FNew.Activate: FNew.Visible = True
                Else: Exit Sub
                End If
            Next Sh
    Tu vois ce que je veux dire ??,
    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Macro excel pour toutes les feuilles du classeur
    Par duffie34 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 28/03/2013, 12h55
  2. [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
  3. [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
  4. Une procédure pour toutes les feuilles
    Par docjo dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/10/2009, 07h32
  5. utiliser une seule servlet pour toutes les jsp
    Par DoubleU dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 20/09/2007, 19h30

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