Macro selection change

Enilorac29 -  
pijaku Messages postés 13513 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

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

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

      Oui exact mon ami, merci de la correction constructive
      A+
      0
    3. 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
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > 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
    5. Enilorac29 > pijaku Messages postés 13513 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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > eriiic Messages postés 24581 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
    2. 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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Enilorac29
       
      Bonjour désolée je ne peux pas partager les informations...
      0
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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