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 :

Simplification de code vba Excel


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 Simplification de code vba Excel
    Bonjour à tous,

    J'ai mis en place les codes suivants que je recopie dans 250 feuilles, c'est un travail fastidieux. Je souhaiterai mettre en place un module avec ces codes et ainsi rendre moi lourde la saisie dans toutes les feuilles. Comment puis-je procéder ? Pouvez-vous m'apporter votre aide s'il vous plait ? J'ai bien essayé de copier ces codes dans un module, mais cela ne fonctionne pas. Je dois certainement oublier de faire quelque chose mais je n'arrive pas à trouver.
    Je vous en remercie par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub affiche()
        Dim FNew As Worksheet, Wb As Workbook
        Set Wb = ThisWorkbook
            For Each FNew In Wb.Worksheets
                FNew.Visible = xlSheetVisible
            Next FNew
            Set FNew = Nothing: Set Wb = Nothing
    End Sub
    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
     
     
    'En cliquant dans une cellule de la colonne A, si pas de saisie de nom dans la colonne C alors message d'avertissement. Sinon, ouverture d'un fichier "FL" avec le numéro de la ligne.
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'on error GoTo fin
     
    If Not Intersect([A12:A39], Target) Is Nothing Then
        Cancel = True
            If Target(, 2).Value = "" Then MsgBox "Merci de saisir votre NOM dans la cellule" & " " & Target(, 2).Address(0, 0): Exit Sub
        Dim FNew As Worksheet, Wb As Workbook, Sh As Worksheet
        Dim Cible As String
        Dim NumLig As Variant
     
        NumLig = ActiveSheet.Range("D5")
        Cible = ("FL" & NumLig)
        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 inutiles
            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
                    Application.Goto FNew.Cells((Target.Value - 1) * 41 + 2, 3), True
    Fin:
            Set FNew = Nothing: Set Wb = Nothing: Set Sh = Nothing
    End Sub
    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
     
    ' Si dans la colonne C on tape autre chose que du numérique, message d'avertissement, retour en arrière et effacement de la saisie dans la cellule.
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Range("C12:C39"), Target) Is Nothing And Target.Count = 1 Then
            If Not IsNumeric(Target) Then
                MsgBox "Merci de saisir un montant !!!"
                With Application
                .EnableEvents = False
                .Undo
                .EnableEvents = True
                End With
            End If
        End If
    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,

    si les feuilles d'un même classeur doivent utiliser le même code par évènement, ne rien coder alors dans
    les modules des feuilles mais juste programmer un évènement commun au niveau du module du classeur ThisWorkbook

    comme par exemple Workbook_SheetBeforeDoubleClick et Workbook_SheetChange

    __________________________________________________________________________________________

    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,

    Je me suis évertué à chercher à créer un module alors que la solution était sous mon nez. Cela va me faire gagner du temps.
    Merci beaucoup
    Bien cordialement
    René

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

Discussions similaires

  1. [XL-2003] Simplification d'un code Vba Excel 2003
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/02/2013, 08h11
  2. Simplification de code VBA Excel
    Par RAID14 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/03/2012, 15h26
  3. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15
  4. Code VBA excel form et modules
    Par Cptnikita dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2007, 10h15
  5. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43

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