Macro selection change

Enilorac29 -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
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 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

tu as oublié d'enlever Sheets("Claim").Rows("56:412").EntireRow.Hidden = False devenu inutile ;-)
eric
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135 > eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention  
 
Salut Eriiic,

Oui exact mon ami, merci de la correction constructive
A+
0
Enilorac29
 
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   Statut Modérateur Dernière intervention   2 761 > 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)
0
Enilorac29 > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
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   Statut Modérateur Dernière intervention   2 761
 
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   Statut Contributeur Dernière intervention   7 275
 
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   Statut Modérateur Dernière intervention   2 761 > eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
Enilorac29
 
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   Statut Contributeur Dernière intervention   3 313
 
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
Enilorac29
 
Bonjour désolée je ne peux pas partager les informations...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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