[résolu] Explication code

  • Initiateur de la discussion Initiateur de la discussion Sean
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Sean

XLDnaute Nouveau
Bonjour,

J'ai reçu de l'aide pour une macro, j'aimerai l'utiliser et l'adapter pour d'autres cellules mais pour cela il faut que je la comprenne ligne par ligne:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$4" Then Exit Sub
Dim ref As Range
Set ref = [C6:C8]
For Each ref In ref
If ref.Offset(, 1) = "-" Then ref = "-" _
Else If ref = "-" Then ref = ""
Next
End Sub

Cela me permet de remettre à 0 une liste lorsqu'elle n'est pas sélectionnée. C'est la solution de job75 (voir réponse 6 de mon précédent topic)

https://www.excel-downloads.com/threads/resolu-mon-code-sefface.157089/

si il était possible d'avoir une petite explication ligne par ligne 😱 😕

merci!
 
Dernière édition:
Re : Explication code

Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
Cette macro se déclenche à chaque fois qu'une cellule de la feuille de calcul est modifiée

If Target.Address <> "$C$4" Then Exit Sub
"Target.Adress" renvoi les coordonnées de la cellule qui vient d'être modifiée. Si cette cellule est la cellule C4, alors on sort de la macro
Dim ref As Range
On défini la variable "ref" comme étant une plage de données
Set ref = [C6:C8]
"ref" est défini comme étant la place C6 à C8
For Each ref In ref
Pour chaque cellule contenue dans la place C6 à C8
If ref.Offset(, 1) = "-" Then ref = "-" _
Si la cellule de droite a la valeur "-" alors la cellule ref prend la même valeur
Else If ref = "-" Then ref = ""
Sinon si ref a la valeur "-" alors ref devient vide
Next
On passe à la cellule suivante
End Sub

ça doit être à peu près ça. Jusqu'à preuve du contraire ^^
 
Re : Explication code

re bonjour,

J'arrive à adapter le code, mais pas à le faire cohabiter!

Private Sub worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$4" Then Exit Sub
Dim ref As Range
Set ref = [C6:C8] 'à adapter
For Each ref In ref
If ref.Offset(, 1) = "-" Then ref = "-" _
Else If ref = "-" Then ref = ""
Next
End Sub

Private Sub Woorksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$6" Then Exit Sub
Dim ref As Range
Set ref = [C32:C37] 'à adapter
For Each ref In ref
If ref.Offset(, -1) = "-" Then ref = "-" _
Else If ref = "-" Then ref = ""
Next
End Sub

le nom Worksheet_Change ne doit apparement pas être le même, mais si il est différent plus rien ne marche... même chose lorsque j'ai une erreur avec la variable ref!

Désolé pour ces questions basiques, j'essaie de m'en sortir seul mais je suis un piètre programmeur 😛
 
Re : [résolu] Explication code

Re

A tester:

VB:
Private Sub worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$4" Or Target.Address = "$C$6" Then 
Dim ref As Range
if Target.Address = "$C$4" then
Set ref = [C6:C8] 'à adapter
else
Set ref = [C32:C37] 'à adapter
end if
For Each ref In ref
If ref.Offset(, 1) = "-" Then ref = "-" _
Else If ref = "-" Then ref = ""
Next
End if
End Sub
 
Re : [résolu] Explication code

Re

Private Sub worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$4" Or Target.Address = "$C$6" Then
Dim ref As Range
if Target.Address = "$C$4" then
Set ref = [C6:C8] 'à adapter
off=1
else
Set ref = [C32:C37] 'à adapter
off=-1
end if
For Each ref In ref
If ref.Offset(, off) = "-" Then ref = "-" _
Else If ref = "-" Then ref = ""
Next
End if
End Sub
 
Re : [résolu] Explication code

ca marche bien! mais du coup (je ne comprend pas trop pourquoi) toutes mes listes (qui sont en C6:C8 et C33:C37) restent activées lorsque un "-" est dans la cellule, alors qu'avant elles ne pouvaient marcher que lorsque le "-" disparaisait.

Je joint le fichier au cas ou mon explication n'est pas claire 🙂
 

Pièces jointes

Re : [résolu] Explication code

ok, en tout cas ce qui importe marche, cette fonctionalité n'est qu'un bonus (je continue tout de même à chercher, et reste ouvert sur les propositions 😛)

Je commencer à comprendre la logique de la programmation, merci pour tes conseils très instructifs!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
481
Réponses
4
Affichages
224
Réponses
2
Affichages
154
Retour