Demande débogage commande Worksheet

Patrick75

XLDnaute Junior
Bonjour à tous,

Avec l'aide des piliers de ce forum, j'arrive à reproduire deus ou trois VBA (toujours les mêmes) sans trop de mal....
Par contre, chaque fois que je veux programmer deux commandes sur le Worksheet, j'obtiens un message d'erreur.
cf. photo jointe
La première commande fonctionne à merveille (en l'occurrence, cacher des lignes en fonction de la valeur d'une cellule).
Lorsque j'ajoute la deuxième commande, (la même mais qui concerne d'autres cellules), le message d'erreur apparaît.
Est-ce qu'il est possible de m'aider s'il vous plait ?
Patrick
 

Pièces jointes

  • Sans titre.png
    Sans titre.png
    25.1 KB · Affichages: 27
  • Sans titre.png
    Sans titre.png
    25.1 KB · Affichages: 29
  • Sans titre.png
    Sans titre.png
    25.1 KB · Affichages: 31

Dranreb

XLDnaute Barbatruc
Re : Demande débogage commande Worksheet

Bonjour.
Mettez tout dans une seule Worksheet_Change avec un Select Case Target.Address

…Et ne remommer pas Target en R.
Les listes déroulantes d’implantations automatiques de procédures d'évènements met Target, alors laissez Target.
 

Patrick75

XLDnaute Junior
Re : Demande débogage commande Worksheet

Merci Dranred :)

Pardon, je ne comprends pas tout :-(
Je crois avoir compris le regroupement des deux commandes cf. photo jointe selon votre 1ère instruction : "Mettez tout dans une seule Worksheet_Change ".


mais pas celle-ci : "avec un Select Case Target.Address"

ni celle-ci "…Et ne renommer pas Target en R."

Quant à celle-ci, "Les listes déroulantes d'implantations automatique de procédures d'évènement met Target, alors laissez Target.", j'imagine que je verrais lorsque les autres instructions seront effectuées
cordialement,
Patrick
 

Pièces jointes

  • Sans titre 2.png
    Sans titre 2.png
    8 KB · Affichages: 26
  • Sans titre 2.png
    Sans titre 2.png
    8 KB · Affichages: 25
  • Sans titre 2.png
    Sans titre 2.png
    8 KB · Affichages: 27

Dranreb

XLDnaute Barbatruc
Re : Demande débogage commande Worksheet

Joignez votre fichier. Je ne vais quand même pas laborieusement retaper du texte contenu dans des images !

Les listes déroulantes d'implantations automatique de procédures d'évènement sont les deux large liste déroulantes qui surmontent la fenêtre du code. Quand vous sélectionnez Worksheet dans celle de gauche (Objet) et Change dans celle de droite (Procédure) il vous implante une Private Sub Worksheet_Change(Byval Target As Range), une ligne vide et enfin la End Sub.
 

Dranreb

XLDnaute Barbatruc
Re : Demande débogage commande Worksheet

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
   Case "$D$38":
      Me.Unprotect "XXX"
      Range("39:67").EntireRow.Hidden = IIf(R = "Non", 1, 0)
      Range("70:79").EntireRow.Hidden = IIf(R = "Non", 1, 0)
      Me.Protect "XXX"
   Case "$D$68":
      …
      etc.
      …
   End Select
End Sub
 

Patrick75

XLDnaute Junior
Re : Demande débogage commande Worksheet

Désolé, ça ne fonctionne pas.
je ne sais pas si le "etc. doit être complété par quelque chose.

à tout hasard, j'ai remplacé "etc." en réécrivant une 2ème fois :
Me.Unprotect "XXX"
Range("39:67").EntireRow.Hidden = IIf(R = "Non", 1, 0)
Range("70:79").EntireRow.Hidden = IIf(R = "Non", 1, 0)
Me.Protect "XXX"
mais ça ne fonctionne pas non plus

ça donne ça :

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$D$38":
Me.Unprotect "XXX"
Range("39:67").EntireRow.Hidden = IIf(R = "Non", 1, 0)
Range("70:79").EntireRow.Hidden = IIf(R = "Non", 1, 0)
Me.Protect "XXX"
Case "$D$69":
Me.Unprotect "XXX"
Range("39:67").EntireRow.Hidden = IIf(R = "Non", 1, 0)
Range("70:79").EntireRow.Hidden = IIf(R = "Non", 1, 0)
Me.Protect "XXX"
End Select
End Sub


Si ce n'est pas trop demandé, peut-être pourriez-vous me renvoyer mon fichier exemple avec la vba complétée et je la recopierai. Merci.


cordialement,
patrick
 

Dranreb

XLDnaute Barbatruc
Re : Demande débogage commande Worksheet

J'ai oublié de remplacer les R = "Non" par Target.Value = "Non"
Mais… ce sont les mêmes lignes 39:67 et 70:79 à traiter dans les deux cas ???
Ce n'est plus comme dans votre exemple initial alors ?
Dans ce cas vous pouvez simplement faire If Target.Address = "$D$39" Or Target.Address = "$D$69" Then
et ne mettre qu"une fois derrière les instructions qui masquent exactement les deux mêmes paquets de lignes.
 

Patrick75

XLDnaute Junior
Re : Demande débogage commande Worksheet

Dranreb,

Si vous avez la disponibilité,
Je renvoie le fichier exemple sur lequel vous pouvez modifier le code VBA.
Je transposerai ensuite sur mon fichier de travail.
les deux séries de rangées à masquer doivent être masquées séparément, chacune par leur propre commande comme je l'ai indiqué sur le fichier que je joins.
Merci de l'aide
Cordialement,
Patrick
 

Pièces jointes

  • Fichier PM 2.xlsm
    17.6 KB · Affichages: 21

Patrick75

XLDnaute Junior
Re : Demande débogage commande Worksheet

Dranred,

Je re-joins un nouveau fichier Exemple PM 3 car j'ai l'impression qu'en bidouillant, j'ai fait fonctionner le fichier comme je l'espérais (y'a un Dieu pour les innocents)
Peut-être pourriez-vous jeter un coup d'œil pour vérifier que le code est bien correct et que je ne vais pas avoir un souci majeur à un moment faute d'avoir clos le code de la bonne façon ou autre erreur.
Grand merci
Cordialement,
Patrick
 

Pièces jointes

  • Fichier PM 3.xlsm
    17.5 KB · Affichages: 22

Dranreb

XLDnaute Barbatruc
Re : Demande débogage commande Worksheet

Ah oui, ça c'est plus dans l'esprit de votre 1er message.
J'aurais cru que vous comprendriez tout de suite qu'il fallait mettre les instructions relatives à chaque cellule concernée derrière le Case adresse correspondant, tant c'est évident pour moi.
 

Si...

XLDnaute Barbatruc
Re : Demande débogage commande Worksheet

salut

ou encore (sans IIf ni répétiton)
Code:
Private Sub Worksheet_Change(ByVal R As Range)
  Select Case R.Address
    Case "$D$38"
      Me.Unprotect "XXX"
      Rows("39:67").Hidden = R = "Non"
    Case "$D$69"
       Me.Unprotect "XXX"
       Rows("70:79").Hidden = R = "Non"
    End Select
   Me.Protect "XXX"
End Sub
 

Patrick75

XLDnaute Junior
Re : Demande débogage commande Worksheet

Merci Dranred pour votre aide tout au long de la journée et merci Si pour la touche finale.
Je n'en reviens pas de votre disponibilité aux uns et aux autres et je ne sais que faire pour vous en remercier.
Avec toute ma considération
Patrick
 

Statistiques des forums

Discussions
312 103
Messages
2 085 310
Membres
102 859
dernier inscrit
Diallokass