Optimisation Code / case et Target

GADENSEB

XLDnaute Impliqué
Bonjour le Forum,

Je cherche à optimiser mon code dans l'onglet "Gestion"
J'utilise la fonction ....If Target.Address(0, 0) = "A5" Then.....

Pour plusieurs cellules, mais j'ai mal construit mon code..

Le code balaye toutes les "if.target" dans la feuille avant de déclencher l'action de la cellule concernée

On m'a parlé de "CASE" mais je ne sais pas comment l'utiliser pour optimiser mon code !!

QQn à une idée ?

Bonne aprem

Seb


Code:
Dim i, j As Integer
 
 
Private Sub Worksheet_Change(ByVal Target As Range)
  'Génére le filtre élaboré d'analyse des données
 Sheets("BASE EMPLOI").[A1:BB1000].AdvancedFilter _
         Action:=xlFilterCopy, _
         CriteriaRange:=Range("A32:D33"), _
         CopyToRange:=Range("A35:i35"), _
         Unique:=False
 
 Application.ScreenUpdating = False
     On Error Resume Next
    Sheets("BASE EMPLOI").Select
    Range("A1:BB1").Select
    Range("BB1").Activate
    Selection.AutoFilter
    Sheets("GESTION").Select
 
Application.ScreenUpdating = True
 
End Sub
 
 
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
 
 
'================================== GENERAL FEUILLE GESTION =================================
 
'TOUT DEPLIER
If Target.Address(0, 0) = "A5" Then
Excel.Application.Visible = False
Range("STATISTIQUES,RELANCES,ZONE3,ZONE4").Select
Selection.EntireRow.Hidden = False
Range("A7").Select
Excel.Application.Visible = True
End If
 
'TOUT REPLIER
If Target.Address(0, 0) = "B5" Then
Excel.Application.Visible = False
Range("STATISTIQUES,RELANCES,ZONE3,ZONE4").Select
Selection.EntireRow.Hidden = True
Range("A7").Select
Excel.Application.Visible = True
End If
 
 
 
 
 
'================================== LANCE L'USF DE SAISIE ==================================
 
If Target.Address(0, 0) = "C5" Then
'Pour afficher l'userform BASEEMPLOI
BASEEMPLOI.Show
End If
 
 
If Target.Address(0, 0) = "G6" Then
'Pour afficher l'userform GENERAL
GENERAL.Show
End If
 
'================================== LANCE L'USF AGENDA GOOGLE ==================================
If Target.Address(0, 0) = "G5" Then 'bouton de commande sur la feuille1
 Worksheets("BASE EMPLOI").Select
 
End If
 
 
 
'================================== FORMULES =================================
 
 
Range("C13").Formula = "=A1*A2"
 
Range(Cells(26, 3), Cells(26, 7)).Formula = _
    "=SUM(" & Cells(13, 3).Address(False, False) & ":" & Cells(25, 3).Address(False, False) & ")"
 
 
 
 
'================================== STATISTIQUES =========================================
'OUVRE LA PARTIE STATISTIQUES ET FERME LES AUTRES PARTIES
If Target.Address(0, 0) = "D5" Then
Excel.Application.Visible = False
Range("STATISTIQUES,RELANCES").Select
Selection.EntireRow.Hidden = False
Range("RELANCES").Select
Selection.EntireRow.Hidden = True
Range("A7").Select
Excel.Application.Visible = True
Range("A11").Select
End If
'OUVRE LA PARTIE STATISTIQUES
If Target.Address(0, 0) = "D6" Then
Excel.Application.Visible = False
Range("STATISTIQUES").Select
Selection.EntireRow.Hidden = False
Range("A7").Select
Excel.Application.Visible = True
Range("A11").Select
End If
'FERME LA PARTIE STATISTIQUES
If Target.Address(0, 0) = "D7" Then
Excel.Application.Visible = False
Range("STATISTIQUES").Select
Selection.EntireRow.Hidden = True
Range("A7").Select
Excel.Application.Visible = True
End If
 
 
 
 
'================================== RELANCES ==================================
'OUVRE LA PARTIE RELANCES ET FERME LES AUTRES PARTIES
If Target.Address(0, 0) = "E5" Then
Excel.Application.Visible = False
Range("STATISTIQUES,RELANCES").Select
Selection.EntireRow.Hidden = False
Range("STATISTIQUES").Select
Selection.EntireRow.Hidden = True
Range("A7").Select
Excel.Application.Visible = True
 
End If
'OUVRE LA PARTIE RELANCES
If Target.Address(0, 0) = "E6" Then
Excel.Application.Visible = False
Range("RELANCES").Select
Selection.EntireRow.Hidden = False
Range("A32").Select
Excel.Application.Visible = True
End If
'FERME LA PARTIE RELANCES
If Target.Address(0, 0) = "E7" Then
Excel.Application.Visible = False
Range("RELANCES").Select
Selection.EntireRow.Hidden = True
Range("A32").Select
Excel.Application.Visible = True
End If
 
 
 '================================== OUVERTURE GESTION POSTE =================================
 
'Génére l'userform POSTE en cliquant sur le CODE
   On Error Resume Next
  ' Function link(c As Range)
 Dim j&
    j = Range("I36").End(xlDown).Row
    If Target.Row <= j And Target.Row >= 36 Then
 
        nNumeroDeLigne = Application.WorksheetFunction.Match(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:a1000"), 0)
 
        GESTIONPOSTE.CODEBASE = Cells(Target.Row, "I").Value
 
 
 
        GESTIONPOSTE.USER = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 2, False)
 
        GESTIONPOSTE.NOMSOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 3, False)
 
 
        GESTIONPOSTE.ZONE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 4, False)
        GESTIONPOSTE.TYPESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 5, False)
        GESTIONPOSTE.NOMCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 7, False)
        GESTIONPOSTE.PRENOMCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 8, False)
        GESTIONPOSTE.FONCTIONCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 9, False)
        GESTIONPOSTE.TELEPHONECONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 10, False)
        GESTIONPOSTE.PORTABLECONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 11, False)
        GESTIONPOSTE.MAILCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 12, False)
        GESTIONPOSTE.ADRESSESCOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 14, False)
        GESTIONPOSTE.CPSOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 16, False)
        GESTIONPOSTE.VILLESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 17, False)
        GESTIONPOSTE.SITESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 18, False)
 
 
        GESTIONPOSTE.DATEINSCRIPTION = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 20)
        GESTIONPOSTE.DATEMAJ = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 21)
        GESTIONPOSTE.DATEANNONCE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 36)
        GESTIONPOSTE.DATEREPONSE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 37)
        GESTIONPOSTE.RELANCE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 38)
        GESTIONPOSTE.DATERETOUR = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 39)
 
 
        GESTIONPOSTE.LOGIN = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 22, False)
        GESTIONPOSTE.MDP = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 23, False)
        GESTIONPOSTE.ANNONCESBYMAIL = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 24, False)
        GESTIONPOSTE.COMMENTAIRES = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 25, False)
 
        GESTIONPOSTE.POSTE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 32, False)
        GESTIONPOSTE.CONTRAT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 33, False)
        GESTIONPOSTE.LIEU = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 34, False)
        GESTIONPOSTE.REMUNERATION = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 35, False)
 
 
 
        GESTIONPOSTE.TEXTECANDIDATURE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 40, False)
        GESTIONPOSTE.ANNONCE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 40, False)
        GESTIONPOSTE.COMMENTAIRESCANDIDATURE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 41, False)
        GESTIONPOSTE.NBENTRETIENS = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 46, False)
        GESTIONPOSTE.CRENTRETIENS = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 52, False)
 
 
        GESTIONPOSTE.Show
 
    End If
 
 
 
 
 
End Sub
 

Pièces jointes

  • BASE EMPLOI - DEMO.xlsm
    238.1 KB · Affichages: 29
  • BASE EMPLOI - DEMO.xlsm
    238.1 KB · Affichages: 32
  • BASE EMPLOI - DEMO.xlsm
    238.1 KB · Affichages: 31

Papou-net

XLDnaute Barbatruc
Re : Optimisation Code / case et Target

Bonjour GADENSEB,

Ci-dessous un début de modification-optimisation de ton code. La partie travaillée concerne les cellules A5 à G6, je pense que tu n'auras pas de problème pour continuer plus bas.
Tu remarqueras qu'il n'est pas indispensable de sélectionner des cellules ou des plages, tu peux les modifier rien qu'en indiquant leurs coordonnées.
Espérant t'avoir ouvert la voie.

Cordialement.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Address(0, 0)
  Case "A5"
    'TOUT DEPLIER
    Excel.Application.Visible = False
    Range("STATISTIQUES,RELANCES,ZONE3,ZONE4").EntireRow.Hidden = False
    Range("A7").Select
    Excel.Application.Visible = True
  Case "B5"
    'TOUT REPLIER
    Excel.Application.Visible = False
    Range("STATISTIQUES,RELANCES,ZONE3,ZONE4").EntireRow.Hidden = True
    Range("A7").Select
    Excel.Application.Visible = True
  Case "C5"
    'Pour afficher l'userform BASEEMPLOI
    BASEEMPLOI.Show
  Case "G5"
    'bouton de commande sur la feuille1
    Worksheets("BASE EMPLOI").Select
  Case "G6"
    'Pour afficher l'userform GENERAL
    GENERAL.Show
End Select

'================================== FORMULES =================================
Range("C13").Formula = "=A1*A2"

Range(Cells(26, 3), Cells(26, 7)).Formula = _
    "=SUM(" & Cells(13, 3).Address(False, False) & ":" & Cells(25, 3).Address(False, False) & ")"

'================================== STATISTIQUES =========================================
'OUVRE LA PARTIE STATISTIQUES ET FERME LES AUTRES PARTIES
...
...
...
Application.EnableEvents = True
End Sub
 

GADENSEB

XLDnaute Impliqué
Re : Optimisation Code / case et Target

Je teste avec ça
Mais cela ne semble pas fonctionner .....



Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.EnableEvents = False
Select Case Target.Address(0, 0)
Case "A5", "B5", "C5", "G5"

Case "A5"
'TOUT DEPLIER
Excel.Application.Visible = False
Range("STATISTIQUES,RELANCES,ZONE3,ZONE4").Select
Selection.EntireRow.Hidden = False
Range("A7").Select
Excel.Application.Visible = True

Case "B5"
'TOUT REPLIER
Excel.Application.Visible = False
Range("STATISTIQUES,RELANCES,ZONE3,ZONE4").Select
Selection.EntireRow.Hidden = True
Range("A7").Select
Excel.Application.Visible = True





'================================== LANCE L'USF DE SAISIE ==================================
Case "C5"
'Pour afficher l'userform BASEEMPLOI
BASEEMPLOI.Show


'================================== LANCE L'USF AGENDA GOOGLE ==================================

Case "G5"
 Worksheets("BASE EMPLOI").Select


[COLOR="#FF0000"]End Select
Application.EnableEvents = True[/COLOR]
'================================== FORMULES =================================


Range("C13").Formula = "=A1*A2"

Range(Cells(26, 3), Cells(26, 7)).Formula = _
    "=SUM(" & Cells(13, 3).Address(False, False) & ":" & Cells(25, 3).Address(False, False) & ")"




'================================== STATISTIQUES =========================================
'OUVRE LA PARTIE STATISTIQUES ET FERME LES AUTRES PARTIES
If Target.Address(0, 0) = "D5" Then
Excel.Application.Visible = False
Range("STATISTIQUES,RELANCES").Select
Selection.EntireRow.Hidden = False
Range("RELANCES").Select
Selection.EntireRow.Hidden = True
Range("A7").Select
Excel.Application.Visible = True
Range("A11").Select
End If
'OUVRE LA PARTIE STATISTIQUES
If Target.Address(0, 0) = "D6" Then
Excel.Application.Visible = False
Range("STATISTIQUES").Select
Selection.EntireRow.Hidden = False
Range("A7").Select
Excel.Application.Visible = True
Range("A11").Select
End If
'FERME LA PARTIE STATISTIQUES
If Target.Address(0, 0) = "D7" Then
Excel.Application.Visible = False
Range("STATISTIQUES").Select
Selection.EntireRow.Hidden = True
Range("A7").Select
Excel.Application.Visible = True
End If




'================================== RELANCES ==================================
'OUVRE LA PARTIE RELANCES ET FERME LES AUTRES PARTIES
If Target.Address(0, 0) = "E5" Then
Excel.Application.Visible = False
Range("STATISTIQUES,RELANCES").Select
Selection.EntireRow.Hidden = False
Range("STATISTIQUES").Select
Selection.EntireRow.Hidden = True
Range("A7").Select
Excel.Application.Visible = True

End If
'OUVRE LA PARTIE RELANCES
If Target.Address(0, 0) = "E6" Then
Excel.Application.Visible = False
Range("RELANCES").Select
Selection.EntireRow.Hidden = False
Range("A32").Select
Excel.Application.Visible = True
End If
'FERME LA PARTIE RELANCES
If Target.Address(0, 0) = "E7" Then
Excel.Application.Visible = False
Range("RELANCES").Select
Selection.EntireRow.Hidden = True
Range("A32").Select
Excel.Application.Visible = True
End If





 '================================== OUVERTURE GESTION POSTE =================================

'Génére l'userform POSTE en cliquant sur le CODE
   On Error Resume Next
  ' Function link(c As Range)
 Dim j&
    j = Range("I36").End(xlDown).Row
    If Target.Row <= j And Target.Row >= 36 Then
    
        nNumeroDeLigne = Application.WorksheetFunction.Match(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:a1000"), 0)
    
        GESTIONPOSTE.CODEBASE = Cells(Target.Row, "I").Value
        
        
        
        GESTIONPOSTE.USER = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 2, False)
        
        GESTIONPOSTE.NOMSOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 3, False)
        
        
        GESTIONPOSTE.ZONE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 4, False)
        GESTIONPOSTE.TYPESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 5, False)
        GESTIONPOSTE.NOMCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 7, False)
        GESTIONPOSTE.PRENOMCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 8, False)
        GESTIONPOSTE.FONCTIONCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 9, False)
        GESTIONPOSTE.TELEPHONECONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 10, False)
        GESTIONPOSTE.PORTABLECONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 11, False)
        GESTIONPOSTE.MAILCONTACT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 12, False)
        GESTIONPOSTE.ADRESSESCOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 14, False)
        GESTIONPOSTE.CPSOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 16, False)
        GESTIONPOSTE.VILLESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 17, False)
        GESTIONPOSTE.SITESOCIETE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 18, False)
        
   
        GESTIONPOSTE.DATEINSCRIPTION = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 20)
        GESTIONPOSTE.DATEMAJ = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 21)
        GESTIONPOSTE.DATEANNONCE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 36)
        GESTIONPOSTE.DATEREPONSE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 37)
        GESTIONPOSTE.RELANCE = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 38)
        GESTIONPOSTE.DATERETOUR = Worksheets("BASE EMPLOI").Cells(nNumeroDeLigne, 39)
    
        
        GESTIONPOSTE.LOGIN = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 22, False)
        GESTIONPOSTE.MDP = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 23, False)
        GESTIONPOSTE.ANNONCESBYMAIL = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 24, False)
        GESTIONPOSTE.COMMENTAIRES = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 25, False)
        
        GESTIONPOSTE.POSTE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 32, False)
        GESTIONPOSTE.CONTRAT = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 33, False)
        GESTIONPOSTE.LIEU = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 34, False)
        GESTIONPOSTE.REMUNERATION = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 35, False)
        
 
        
        GESTIONPOSTE.TEXTECANDIDATURE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 40, False)
        GESTIONPOSTE.ANNONCE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 40, False)
        GESTIONPOSTE.COMMENTAIRESCANDIDATURE = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 41, False)
        GESTIONPOSTE.NBENTRETIENS = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 46, False)
        GESTIONPOSTE.CRENTRETIENS = Application.VLookup(Cells(Target.Row, "I").Value, Worksheets("BASE EMPLOI").Range("A1:BB1000"), 52, False)
        
        
        GESTIONPOSTE.Show
        
    End If





End Sub
 

Papou-net

XLDnaute Barbatruc
Re : Optimisation Code / case et Target

RE:

Essaie en supprimant la quatrième ligne
Code:
Case "A5", "B5", "C5", "G5"
qui sort de la condition sans autre action.

Et n'oublie pas de rétablir EnableEvents à True à la fin de la macro!

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67