Macro selection change

Fermé
Enilorac29 - Modifié le 17 juin 2020 à 10:39
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 juin 2020 à 09:03
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

Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127
17 juin 2020 à 10:44
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 
 
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
17 juin 2020 à 10:56
Bonjour,

tu as oublié d'enlever Sheets("Claim").Rows("56:412").EntireRow.Hidden = False devenu inutile ;-)
eric
0
Mike-31 Messages postés 18384 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 9 avril 2025 5 127 > eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024
17 juin 2020 à 11:08
Salut Eriiic,

Oui exact mon ami, merci de la correction constructive
A+
0
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757 > Enilorac29
17 juin 2020 à 16:59
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)
0
Enilorac29 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
17 juin 2020 à 18:04
Bonjour j'ai double-cliqué sur la feuille en question dans vba.
Comme je disais je suis vraiment plus que débutante.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
Modifié le 17 juin 2020 à 10:45
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...)

0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
17 juin 2020 à 10:54
Bonjour,

3- Une liste déroulante de type "validations de données" ne déclenche pas l'événement WorkSheet_Change.
Bah si :-)
eric
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757 > eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024
17 juin 2020 à 10:59
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++
0
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
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
17 juin 2020 à 14:19
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




0
Bonjour désolée je ne peux pas partager les informations...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
18 juin 2020 à 09:03
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

0