Activer code vba ds module

blancolie

XLDnaute Impliqué
Bonjour Le Forum,

Je voudrais comment activer ce code qui se situe ds le module Filtrage pour faire marcher mon filtrage dans la feuille BDD_Site.
car la je vois pas comment faire.

Merci de votre aide.

Cordialement
 

Pièces jointes

  • Site En arrosage automatique.xlsm
    25.3 KB · Affichages: 18
Solution
Bonjour Blancolie, Dranreb,
Vous pouvez transférer votre Worksheet_Change de Filtrage là où il faut, c'est à dire dans votre page Site.
D'autre part vous avez la ligne "If ActiveSheet.Name <> "BDD_Site"" seulement la feuille BDD_Site n'existe pas.
Ensuite vous avez : [B1O].AutoFilter, je pense que c'est plutôt [B10].AutoFilter
On obtiendrait alors dans la feuille Site la structure suivante :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With [BDD_Site]
        With .Rows(.Rows.Count + 1)
            If Not Intersect(ActiveCell, .Cells(1)) Is Nothing And .Cells(0, 1) <> "" Then
                .Rows(0).Copy .Cells(1)
                .SpecialCells(xlCellTypeConstants).ClearContents
            End If
        End With
    End...

Dranreb

XLDnaute Barbatruc
Bonsoir.
Vous ne pouvez pas écrire de procédure de prise en charge d'évènement dans un module standard.
Tout ce que vous pouvez faire c'est invoquer une procédure Public d'un module standard depuis une procédure de prise en charge d'évènement écrite dans un module objet.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Blancolie, Dranreb,
Vous pouvez transférer votre Worksheet_Change de Filtrage là où il faut, c'est à dire dans votre page Site.
D'autre part vous avez la ligne "If ActiveSheet.Name <> "BDD_Site"" seulement la feuille BDD_Site n'existe pas.
Ensuite vous avez : [B1O].AutoFilter, je pense que c'est plutôt [B10].AutoFilter
On obtiendrait alors dans la feuille Site la structure suivante :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With [BDD_Site]
        With .Rows(.Rows.Count + 1)
            If Not Intersect(ActiveCell, .Cells(1)) Is Nothing And .Cells(0, 1) <> "" Then
                .Rows(0).Copy .Cells(1)
                .SpecialCells(xlCellTypeConstants).ClearContents
            End If
        End With
    End With
ActiveSheet.AutoFilterMode = False
If Intersect(Target, ActiveSheet.Range("C5,C7,G5,E5")) Is Nothing Then Exit Sub
  [B10].AutoFilter 'ça peut être ça tout simplement
  Select Case Target.Column
    Case 3, 4, 6
     If [C5] <> "" Then [B10].AutoFilter Field:=1, Criteria1:=[C5].Value      'Secteur
      If [E5] <> "" Then [B10].AutoFilter Field:=2, Criteria1:=[E5].Value      'Site
      If [G5] <> "" Then [B10].AutoFilter Field:=3, Criteria1:=[G5].Value    'Actif/inactif
      If [C7] <> "" Then [B10].AutoFilter Field:=3, Criteria1:=[C7].Value    'Matériel
      If [C5] & [C7] & [E5] & [G5] = "" Then [B10].AutoFilter
    Case Else
      ActiveSheet.AutoFilterMode = False
  End Select
End Sub
Sans prévaloir des actions effectiées.
 

Discussions similaires

Réponses
3
Affichages
477
Réponses
3
Affichages
350

Statistiques des forums

Discussions
311 732
Messages
2 081 995
Membres
101 857
dernier inscrit
mt60400