Macro selection change

Signaler
-
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020
-
Bonjour,

J'essaie de créer une macro en utilisant le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
 
    If Not Application.Intersect(Target, [AC15]) Is Nothing Then
    If sheets ("Claim").Range.Value = "01" Then
               Sheets ("Claim").Rows("56:62".EntireRow.Hidden = False
               Sheets ("Claim").Rows("17:55".EntireRow.Hidden = True
               Sheets ("Claim").Rows("63:412".EntireRow.Hidden = False
'le choix continue selon le choix de la liste déroulante de ac15

       End if
End Sub



Cependant, ça ne fonctionne pas si je "nomme" pas mon macro et lorsque je le nomme ça me crée un nouvelle ligne sans tenir compte du code que j'ai mis.
Je n'arrive pas à créer la macro événementielle du tout.

J'y arrive cependant en gardant que la partie selection.

Quelqu'un peut m'aider?

Merci!
Cordialement

Configuration: Android / Chrome 71.0.3578.141

4 réponses

Messages postés
17137
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 juillet 2020
4 121
bonjour,
en début de code j'aurai ajouté cette ligne
Sheets("Claim").Rows("17:412").EntireRow.Hidden = False


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, [AC15]) Is Nothing Then
Sheets("Claim").Rows("17:412").EntireRow.Hidden = False
If Target.Value = "01" Then
Sheets("Claim").Rows("56:412").EntireRow.Hidden = False
Sheets("Claim").Rows("17:55").EntireRow.Hidden = True
End If
End If
End Sub 
 
Messages postés
17137
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
7 juillet 2020
4 121 >
Messages postés
23377
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
5 juillet 2020

Salut Eriiic,

Oui exact mon ami, merci de la correction constructive
A+
Bonjour malheureusement la sélection n'est prise en compte que lorsque j'appuie enter ou quand je clique sur une autre cellule.

Ça ne se fait pas au moment de la sélection.

Aussi quand je crée le macro worksheet selection change, lorsque je fais exécuter sur VBA, une fenêtre s'ouvre pour enregistrer un nom à cette macro... Si je mets un nom, ça crée un nouvelle macro...

Qu'est-ce que je fais d'erroné?

Merci.
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020
2 448 > Enilorac29
Tu le mets ou ce code?

Dans un module standard?
Dans le module de la feuille concernée? (=> clic droit sur l'onglet concerné / visualiser le code)
>
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020

Bonjour j'ai double-cliqué sur la feuille en question dans vba.
Comme je disais je suis vraiment plus que débutante.
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020
2 448 > Enilorac29
C'est la bonne méthode...

Je vais rejoindre Michel_m (salutations) pour dire qu'il nous faut un fichier.
Tu peux créer un nouveau fichier anonymisé (respecte les noms des feuilles), tenter de mettre en place ta macro et revenir nous voir. ça ira plus vite que de tâtonner...
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020
2 448
Bonjour,

1- le code donné ici est incomplet,

2- Merci d'utiliser la coloration syntaxique dans vos messages et commentaires :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

3- Une liste déroulante de type "validations de données" ne déclenche pas l'événement WorkSheet_Change.
Il vous faut donc, soit un autre événement (WorkSheet_SelectionChange), soit une autre façon de procéder (bouton de commande / remplacement de la liste de validation par une ComboBox / etc...)

Cordialement,
Franck
Messages postés
23377
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
5 juillet 2020
6 224
Bonjour,

3- Une liste déroulante de type "validations de données" ne déclenche pas l'événement WorkSheet_Change.
Bah si :-)
eric
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020
2 448 >
Messages postés
23377
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
5 juillet 2020

Salut Eriiic,

Bah ouais.
Tu as raison...
Pourtant, j'ai testé sur un fichier il n'y a pas longtemps et rien n'y a fait...
Bug temporaire ou conflit...

Merci du rappel...

J'vous laisse, il y a trop de monde sur ce sujet ;-)
A++
Bonjour

J'ai aussi essayé de changer en utilisant le worksheet_selectionchange ça ne fonctionne pas...

Systématiquement on me demande de nommer mon macro et celui que j'ai créé n'est pas pris en compte.

Je ne connais pas beaucoup VBA et suis complètement débutante à ce sujet...

Merci de votre retour

Cordialement
Messages postés
16165
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
7 juillet 2020
2 985
Bonjour à tout ce beau monde excellien

Il serait utile de voir la classeur...

Mettre le classeur sans données confidentielles en pièce jointe sur 
https://mon-partage.fr
Dans lien de téléchargement
faire un clic droit- copier l’adresse du lien et le coller dans votre message en cours sur ccm




Bonjour désolée je ne peux pas partager les informations...
Messages postés
12177
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
26 juin 2020
2 448
Re-

Regarde ce classeur :
https://www.cjoint.com/c/JFshccQm5gn

Il contient cette macro, correctement installée dans le bon module :
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("AC15")) Is Nothing Then
        If Target.Cells.Count = 1 Then
            AfficheTout
            Select Case Target.Value
                Case ""
                Case "1"
                    Masque "17:55"
                Case "2"
                    Masque "56:80"
                Case "3"
                    Masque "17:50,56:80"
                Case "4"
                    Masque "17,19:20,55:56"
                Case "5"
                    Masque "17:25"
                Case "6"
                    Masque "54:55"
                Case Else
                    MsgBox "Saisie interdite"
                    Target.Value = ""
            End Select
        End If
    End If
End Sub
Private Sub AfficheTout()
    Me.Rows("17:5000").EntireRow.Hidden = False
End Sub
Private Sub Masque(Lignes As String)
    If InStr(1, Lignes, ",") > 0 Then
        Dim i As Integer, Ligne As Variant
        Ligne = Split(Lignes, ",")
        For i = LBound(Ligne) To UBound(Ligne)
            Me.Rows(Ligne(i)).EntireRow.Hidden = True
        Next i
    Else
        Me.Rows(Lignes).EntireRow.Hidden = True
    End If
End Sub