Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Attribuer une macro à une cellule ou une liste

20 réponses
Avatar
Rex
Bon dimanche à vous toutes et tous

En bref
Comment faire pour activer une macro lors d'un changement de valeur dans une
cellule?


En un peu plus long

Grâce à certains d'entre vous (même beaucoup d'entres vous)
j'arrive doucement, mais là alors très doucement, à faire des trucs
surprenant pour mon fichier

Je voudrais maintenant automatiser une petit truc

Grâce à Trirème et Garnote, je suis parvenu à créer les list dont j'avais
besoin

Pour faire court, une list active une deuxième list
Quand je sélectionne un nom dans la deuxième ma cellule A2 change
Et comme toute une série de cellule sont liées à celle-là, toute est remis à
jour

J'ai une petite macro qui réarrange la feuille pour lui donner l'aspect
souhaité

Mais je ne parviens pas à attribuer cette macro

Elle devrait s'exécuter lors de chaque changement de la cellule A2
Avant j'employais des listbox et c'était simple
Mais dans la nouvelle mouture j'utilise des lists et il n'y pas moyen de
leur attribuer une macro

Cela doit se faire par macro évènementielle, mais je ne suis pas sûr de mon
coup
Cela doit être facile, mais j'y arrive pas

Rex ;-)))

10 réponses

1 2
Avatar
JB
Bonjour,

http://boisgontierjacques.free.fr/pages_site/evenements.htm#WorkSheetChange

JB
On 19 août, 14:58, "Rex" wrote:
Bon dimanche à vous toutes et tous

En bref
Comment faire pour activer une macro lors d'un changement de valeur dans une
cellule?

En un peu plus long

Grâce à certains d'entre vous (même beaucoup d'entres vous)
j'arrive doucement, mais là alors très doucement, à faire des trucs
surprenant pour mon fichier

Je voudrais maintenant automatiser une petit truc

Grâce à Trirème et Garnote, je suis parvenu à créer les list do nt j'avais
besoin

Pour faire court, une list active une deuxième list
Quand je sélectionne un nom dans la deuxième ma cellule A2 change
Et comme toute une série de cellule sont liées à celle-là, toute est remis à
jour

J'ai une petite macro qui réarrange la feuille pour lui donner l'aspect
souhaité

Mais je ne parviens pas à attribuer cette macro

Elle devrait s'exécuter lors de chaque changement de la cellule A2
Avant j'employais des listbox et c'était simple
Mais dans la nouvelle mouture j'utilise des lists et il n'y pas moyen de
leur attribuer une macro

Cela doit se faire par macro évènementielle, mais je ne suis pas sû r de mon
coup
Cela doit être facile, mais j'y arrive pas

Rex ;-)))


Avatar
Rex
Bonjour JB

Et merci à toi

Mais moi pas trop malin, moi pas comprendre


A toute hasard j'ai ajouté la ligne

Private Sub Worksheet_Change(ByVal Target As Range)
au début de ma macro mais cela ne fonctionne pas

Pour le moment j'ai ceci

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Et je voudrais qu'elle s'active uniquement quand la valeur de A2 change

D'avance merci et à très bientôt

Rex ;-))))


"JB" a écrit dans le message de news:

Bonjour,

http://boisgontierjacques.free.fr/pages_site/evenements.htm#WorkSheetChange

JB
On 19 août, 14:58, "Rex" wrote:
Bon dimanche à vous toutes et tous

En bref
Comment faire pour activer une macro lors d'un changement de valeur dans
une

cellule?

En un peu plus long

Grâce à certains d'entre vous (même beaucoup d'entres vous)
j'arrive doucement, mais là alors très doucement, à faire des trucs
surprenant pour mon fichier

Je voudrais maintenant automatiser une petit truc

Grâce à Trirème et Garnote, je suis parvenu à créer les list dont j'avais
besoin

Pour faire court, une list active une deuxième list
Quand je sélectionne un nom dans la deuxième ma cellule A2 change
Et comme toute une série de cellule sont liées à celle-là, toute est remis
à

jour

J'ai une petite macro qui réarrange la feuille pour lui donner l'aspect
souhaité

Mais je ne parviens pas à attribuer cette macro

Elle devrait s'exécuter lors de chaque changement de la cellule A2
Avant j'employais des listbox et c'était simple
Mais dans la nouvelle mouture j'utilise des lists et il n'y pas moyen de
leur attribuer une macro

Cela doit se faire par macro évènementielle, mais je ne suis pas sûr de
mon

coup
Cela doit être facile, mais j'y arrive pas

Rex ;-)))


Avatar
JB
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
End If
End Sub

JB

On 19 août, 15:17, "Rex" wrote:
Bonjour JB

Et merci à toi

Mais moi pas trop malin, moi pas comprendre

A toute hasard j'ai ajouté la ligne

Private Sub Worksheet_Change(ByVal Target As Range)
au début de ma macro mais cela ne fonctionne pas

Pour le moment j'ai ceci

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Et je voudrais qu'elle s'active uniquement quand la valeur de A2 change

D'avance merci et à très bientôt

Rex ;-))))

"JB" a écrit dans le message de news:

Bonjour,

http://boisgontierjacques.free.fr/pages_site/evenements.htm#WorkSheet...

JB
On 19 août, 14:58, "Rex" wrote:



Bon dimanche à vous toutes et tous

En bref
Comment faire pour activer une macro lors d'un changement de valeur dans
une

cellule?

En un peu plus long

Grâce à certains d'entre vous (même beaucoup d'entres vous)
j'arrive doucement, mais là alors très doucement, à faire des tru cs
surprenant pour mon fichier

Je voudrais maintenant automatiser une petit truc

Grâce à Trirème et Garnote, je suis parvenu à créer les list dont j'avais
besoin

Pour faire court, une list active une deuxième list
Quand je sélectionne un nom dans la deuxième ma cellule A2 change
Et comme toute une série de cellule sont liées à celle-là, tout e est remis
à

jour

J'ai une petite macro qui réarrange la feuille pour lui donner l'aspe ct
souhaité

Mais je ne parviens pas à attribuer cette macro

Elle devrait s'exécuter lors de chaque changement de la cellule A2
Avant j'employais des listbox et c'était simple
Mais dans la nouvelle mouture j'utilise des lists et il n'y pas moyen de
leur attribuer une macro

Cela doit se faire par macro évènementielle, mais je ne suis pas s ûr de
mon

coup
Cela doit être facile, mais j'y arrive pas

Rex ;-)))- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Rex
Bonjour à nouveau

Et avant tout merci pour ton aide

Mais la vie n'est pas toujours aussi simple qu'on espère

J'ai fais des petits tests
Dont certains avant ton deuxième message

Et ta petit ajoute fonctionne

Mais quand je l'inclus dans le reste de la macro (merci Trirème)
cela bloque

La cellule J4 agit sur la cellule A2 et si je ne change pas la cellule J3
cela fonctionne

Mais la cellule J4 est une liste crée par une liste en J3

Et quand je change en J3 ça bloque sur la ligne tout en bas

c.EntireRow.Hidden = (c.Value = 0)

J'arrive pas à voir ce qui cloche

As-tu une idée


Rex

Et d'avance merci



voici le code

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$J$3" Then
[J4].ClearContents
' *********** initialisations **************************
Datas = "Datas" ' Nom de la plage de données
Offre = "Offers" ' Nom de l'onglet contenant les Datas
Consultation = "Tracking_Orders"
OffreNom = "Offre-Nom" ' Nom de l'entête de colonne des Offres-Nom
Statut = "Status" ' Nom de l'entête de colonne des Statuts
' ************ fin d'initialisation *********************
LaListe = "": compt = 0
' Construire une liste de validation à partir des 'Offre-Nom' qui
conviennent


With Worksheets(Offre)
NumeroColonneOffreNom = Application.Match(OffreNom,
.Range(Datas).Resize(1), 0)
' En recherchant la position de la colonne dans la 1ère ligne des
Datas,
' On évite les erreurs en cas de déplacement ou ajout de colonnes.
NumeroColonneStatus = Application.Match(Statut,
.Range(Datas).Resize(1), 0)
Decalage = NumeroColonneStatus - NumeroColonneOffreNom
For Each c In .Range(Datas).Offset(1, NumeroColonneOffreNom -
1).Resize(, 1)
' La colonne contenant 'Offre-Nom' est cherchée automatiquement
If c.Offset(, Decalage) = [J3] Then
If IsEmpty(c) Or c = "" Then c = "Référence absente"
LaListe = LaListe & c & ",": compt = compt + 1
' MsgBox LaListe
End If
Next
End With

If LaListe = "," Then
Range("Offre_Nom") = "Aucune correspondance"
Exit Sub
Else
LaListe = Left(LaListe, Len(LaListe) - 1)
Range("Offre_Nom") = compt & " correspondance(s)"
End If


With Worksheets(Consultation).Range("Offre_Nom").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator: _
xlBetween, Formula1:=LaListe
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If


'Private Sub Worksheet_Change(ByVal Target As Range)
' If Target.Address = "$A$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
' End If

End Sub

' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

"JB" a écrit dans le message de news:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
End If
End Sub

JB

On 19 août, 15:17, "Rex" wrote:
Bonjour JB

Et merci à toi

Mais moi pas trop malin, moi pas comprendre

A toute hasard j'ai ajouté la ligne

Private Sub Worksheet_Change(ByVal Target As Range)
au début de ma macro mais cela ne fonctionne pas

Pour le moment j'ai ceci

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
End Sub
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Et je voudrais qu'elle s'active uniquement quand la valeur de A2 change

D'avance merci et à très bientôt

Rex ;-))))

"JB" a écrit dans le message de news:

Bonjour,

http://boisgontierjacques.free.fr/pages_site/evenements.htm#WorkSheet...

JB
On 19 août, 14:58, "Rex" wrote:



Bon dimanche à vous toutes et tous

En bref
Comment faire pour activer une macro lors d'un changement de valeur dans
une

cellule?

En un peu plus long

Grâce à certains d'entre vous (même beaucoup d'entres vous)
j'arrive doucement, mais là alors très doucement, à faire des trucs
surprenant pour mon fichier

Je voudrais maintenant automatiser une petit truc

Grâce à Trirème et Garnote, je suis parvenu à créer les list dont
j'avais


besoin

Pour faire court, une list active une deuxième list
Quand je sélectionne un nom dans la deuxième ma cellule A2 change
Et comme toute une série de cellule sont liées à celle-là, toute est
remis


à
jour

J'ai une petite macro qui réarrange la feuille pour lui donner l'aspect
souhaité

Mais je ne parviens pas à attribuer cette macro

Elle devrait s'exécuter lors de chaque changement de la cellule A2
Avant j'employais des listbox et c'était simple
Mais dans la nouvelle mouture j'utilise des lists et il n'y pas moyen de
leur attribuer une macro

Cela doit se faire par macro évènementielle, mais je ne suis pas sûr de
mon

coup
Cela doit être facile, mais j'y arrive pas

Rex ;-)))- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Trirème
Bonjour Rex,
Pour chaque feuille il existe un évènement Worksheet_Change distinct.
S'il en existe un il ne peut y en avoir qu'un seul.
S'il faut gérer des actions différentes selon des changements dans des plages différentes,
il faut les gérer dans le même code et c'est possible.

MAIS, si mes souvenirs sur ton projet sont bons, j'ai l'impression que ton code veut faire
référence à une 2ème feuille (feuille 'Offres' ?). Le code de JB devrait donc être saisi
DANS CET AUTRE ONGLET. Je pense que tu sais où le saisir ?
Si c'est pas le cas et que tu veux faire référence à la même feuille, il suffit de changer
la fin de ton code :
--- depuis ici environ -----------------
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If


'Private Sub Worksheet_Change(ByVal Target As Range)
' If Target.Address = "$A$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
' End If

End Sub
---- jusqu'ici -------------------------

par :

.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
ElseIf Target.Address = "$A$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
End If

End Sub


En gros, au lieu d'avoir un If ... Then ... End If
Tu as un If ... Then ... ElseIf ... End If

CordialamentIf ... Then ... End If

Cordialement,
Trirème
Avatar
Rex
Bonsoir


ET CELA A L'AIR DE FONCTIONNER

Il faudra que je fasse des tests plus profond pour être sur

Mais à première vue cela fonctionne impeccablement

MAIS

Je suis en pliene cuisson (Fillet de dinde Spécial Rex)

ce qui comprend, en plus du fillet, oignon, ail, vin, carottes, plein
d'épices différents, plein de truc comme sauce soya, sauce huitres et
champignons ............

Et cela demande du boulot et de la surveillance

Je te recontacte ce soir

A bientôt

Rex

ET UN GRAND MERCI



"Trirème" a écrit dans le message de news:

Bonjour Rex,
Pour chaque feuille il existe un évènement Worksheet_Change distinct.
S'il en existe un il ne peut y en avoir qu'un seul.
S'il faut gérer des actions différentes selon des changements dans des
plages différentes,

il faut les gérer dans le même code et c'est possible.

MAIS, si mes souvenirs sur ton projet sont bons, j'ai l'impression que ton
code veut faire

référence à une 2ème feuille (feuille 'Offres' ?). Le code de JB devrait
donc être saisi

DANS CET AUTRE ONGLET. Je pense que tu sais où le saisir ?
Si c'est pas le cas et que tu veux faire référence à la même feuille, il
suffit de changer

la fin de ton code :
--- depuis ici environ -----------------
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If


'Private Sub Worksheet_Change(ByVal Target As Range)
' If Target.Address = "$A$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
' End If

End Sub
---- jusqu'ici -------------------------

par :

.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
ElseIf Target.Address = "$A$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
End If

End Sub


En gros, au lieu d'avoir un If ... Then ... End If
Tu as un If ... Then ... ElseIf ... End If

CordialamentIf ... Then ... End If

Cordialement,
Trirème



Avatar
Trirème
Je suis en pliene cuisson (Filet de dinde Spécial Rex)

ce qui comprend, en plus du filet, oignon, ail, vin, carottes, plein
d'épices différents, plein de truc comme sauce soya, sauce huitres et
champignons ............

Tu enlèves la sauce soja et la sauce huitres et j'arrive.

(Heu... ? C'est pas de la cuisine anglaise ça ?)
;-)

Avatar
Rex
Bonsoir



D'abord les choses IMPORTANTES

Le soya et la sauce d'huître se mettent en très petites quantités

Et si tu veux en savoir plus

D'abords saisir le filet
Le retirer du feu
Faire brunir l'ail et les oignons dans un mélange d'huile d'olive et de
beurre frais de ferme
Un bonne cuillère de miel facilite le "bronzage"

Un grand verre (ou même un peu moins) de vin (mieux vaut lésiner sur la
quantité que sur la qualité)
Réduire
Puis on ajoute une boîte de tomates pelées, et une bonne cuillèrée de
concentré de tomate
On allonge avec un peu de court bouillon de vollaile (tu fais facilement à
partir des restes d'un poulet rôti)

tu mets un terrine en terre cuite au four
Quand elle est bien chaude, tu la retire
tu y verse de l'huile d'olive, tu y pose le filet, tu l'entoure de carottes
et de tomates fraîches coupées
Tu arrose avec la sauce et tu mets au four
pendant un certain temps

A servir avec des champignons de prairies cuites dans un beurre d'ail et des
pommes de terre cuite au four
et une bonne salade bien fraîche
Ne pas abuser, surtout avant une visite médicale


Et maintenant passons au détails moins importants

Mes lignes ne sont toujours pas cachées ;-(((((((

Je te remets le code en entier

Juste pour info
Si je lance juste les ligne pour cacher cela fonctionne
Ne pourrais pas lancer cette macro de la tienne

Si j'ai bonne mémoire on doit faire un "Call", non?


A bientôt

Rex qui digère ..............

Voici le code

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$J$3" Then
[J4].ClearContents
' *********** initialisations **************************
Datas = "Datas" ' Nom de la plage de données
Offre = "Offers" ' Nom de l'onglet contenant les Datas
Consultation = "Tracking_Orders"
OffreNom = "Offre-Nom" ' Nom de l'entête de colonne des Offres-Nom
Statut = "Status" ' Nom de l'entête de colonne des Statuts
' ************ fin d'initialisation *********************
LaListe = "": compt = 0
' Construire une liste de validation à partir des 'Offre-Nom' qui
conviennent
With Worksheets(Offre)
NumeroColonneOffreNom = Application.Match(OffreNom,
.Range(Datas).Resize(1), 0)
' En recherchant la position de la colonne dans la 1ère ligne des
Datas,
' On évite les erreurs en cas de déplacement ou ajout de colonnes.
NumeroColonneStatus = Application.Match(Statut,
.Range(Datas).Resize(1), 0)
Decalage = NumeroColonneStatus - NumeroColonneOffreNom
For Each c In .Range(Datas).Offset(1, NumeroColonneOffreNom -
1).Resize(, 1)
' La colonne contenant 'Offre-Nom' est cherchée automatiquement
If c.Offset(, Decalage) = [J3] Then
If IsEmpty(c) Or c = "" Then c = "Référence absente"
LaListe = LaListe & c & ",": compt = compt + 1
' MsgBox LaListe
End If
Next
End With

If LaListe = "," Then
Range("Offre_Nom") = "Aucune correspondance"
Exit Sub
Else
LaListe = Left(LaListe, Len(LaListe) - 1)
Range("Offre_Nom") = compt & " correspondance(s)"
End If


With Worksheets(Consultation).Range("Offre_Nom").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator: _
xlBetween, Formula1:=LaListe
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
ElseIf Target.Address = "$A$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
Range([D2], [D185]).EntireRow.Show
For Each c In Range([D2], [D55])
c.EntireRow.Hidden = (c.Value = 0)
Next c
Application.ScreenUpdating = True
End If

End Sub

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx




"Trirème" a écrit dans le message de news:

Je suis en pliene cuisson (Filet de dinde Spécial Rex)

ce qui comprend, en plus du filet, oignon, ail, vin, carottes, plein
d'épices différents, plein de truc comme sauce soya, sauce huitres et
champignons ............

Tu enlèves la sauce soja et la sauce huitres et j'arrive.

(Heu... ? C'est pas de la cuisine anglaise ça ?)
;-)



Avatar
Trirème
...
...
A servir avec des champignons de prairies cuits dans un beurre d'ail et des
pommes de terre cuites au four
et une bonne salade bien fraîche
Ne pas abuser, surtout avant une visite médicale


Je ne trouve pas de smiley qui salive

Mes lignes ne sont toujours pas cachées ;-(((((((

...
ElseIf Target.Address = "$A$2" And Target.Count = 1 Then


Tu veux donc cacher les lignes de la feuille qui contient A2 ? Si c'est ça, le code doit
fonctionner.
Par contre, si tu veux comme je le suggérais, cacher les lignes d'une autre feuille que
celle contenant A2, tu devrais mettre :

ElseIf Target.Address = "$I$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
With Worksheets("NomAutreFeuille") 'Précise bien le nom de la feuille
' With Worksheets(Offre) ' Ça serait pas ce nom déjà défini par hasard ?
' Range([D2], [D185]).EntireRow.Show ' Je ne sais pas à quoi sert cette instruction
' .Range("D2:D185").EntireRow.Show ' Mais si tu veux que ça marche il faut
utiliser les guillemets
' .Range("D2:D185").EntireRow.Hidden = False ' A moins que tu veuilles réafficher
toutes les lignes ?
For Each c In .Range("D2:D55")
c.EntireRow.Hidden = (c.Value = 0)
Next c
End With
Application.ScreenUpdating = True
End If

Cordialement,
Trirème

Avatar
rthompson
Bonjour

;-)..........

ou alors ;-)°°°°°°°°°

ou encore ;-):::::::::::::::::::::::

Mais j'en sais pas plus que toi

En ce qui concernen mon fichier je te joins une version

Si je supprime dans la macro la partie cache ligne et que je l'active avec
le bouton "Show needed"
tout fonctionne

Mais si je veux le laisser en un bloc, ce qui serait beaucoup mieux, ça
bloque sur la ligne
c.EntireRow.Hidden = (c.Value = 0)

Si tu as une idée


A bientôt et merci

Rex

http://cjoint.com/?iukSgVZAVc

J'ai du supprimer des feuilles à cause de la taille, mais cela ne change
rien pour ce problème-ci



"Trirème" a écrit dans le message de news:

...
...
A servir avec des champignons de prairies cuits dans un beurre d'ail et
des
pommes de terre cuites au four
et une bonne salade bien fraîche
Ne pas abuser, surtout avant une visite médicale


Je ne trouve pas de smiley qui salive

Mes lignes ne sont toujours pas cachées ;-(((((((
...
ElseIf Target.Address = "$A$2" And Target.Count = 1 Then


Tu veux donc cacher les lignes de la feuille qui contient A2 ? Si c'est
ça, le code doit fonctionner.
Par contre, si tu veux comme je le suggérais, cacher les lignes d'une
autre feuille que celle contenant A2, tu devrais mettre :

ElseIf Target.Address = "$I$2" And Target.Count = 1 Then
Application.ScreenUpdating = False
With Worksheets("NomAutreFeuille") 'Précise bien le nom de la feuille
' With Worksheets(Offre) ' Ça serait pas ce nom déjà défini par hasard ?
' Range([D2], [D185]).EntireRow.Show ' Je ne sais pas à quoi sert
cette instruction
' .Range("D2:D185").EntireRow.Show ' Mais si tu veux que ça
marche il faut utiliser les guillemets
' .Range("D2:D185").EntireRow.Hidden = False ' A moins que tu
veuilles réafficher toutes les lignes ?
For Each c In .Range("D2:D55")
c.EntireRow.Hidden = (c.Value = 0)
Next c
End With
Application.ScreenUpdating = True
End If

Cordialement,
Trirème



1 2