Macro selection change
Enilorac29
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
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 :
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
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
-
bonjour,
en début de code j'aurai ajouté cette ligne
Sheets("Claim").Rows("17:412").EntireRow.Hidden = FalsePrivate 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-
-
-
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. -
-
-
-
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...)
-
-
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
-
-
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
-
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