Supprimer et afficher des lignes

Bonjour à tous,

j'ai trouvé un code sur ce site (écrit par Nad-Dan je crois) pour supprimer des lignes dans une feuille et je l'ai adapté à mes besoins. Ça fonctionne très bien.

Cependant, j'aimerais faire un peu plus.

Sub cache()

Dim cel As Range

Dim w As Worksheet

On Error Resume Next

For Each w In ThisWorkbook.Worksheets

w.Select

For Each cel In Range("c3:c9")

If [F10] = 7 Then

cel.EntireRow.Hidden = True

End If

Next cel

Next w

End Sub

Ici, les lignes 3 à 9 disparaissent quand la cellule F10 est égale 7.

Ce que j'aimerais, c'est que les lignes 19 à 25 disparaissent aussi et que les lignes 10 à 16 et 26 à 32 apparaissent. Elles seront préalablement cachées.

J'ai essayé d'imbriquer ces demandes moi-même mais sans succès jusqu'à présent.

Merci à vous.

Bonjour,

La macro effectue ta demande sur chaque feuille de ton classeur si F10 = 7.

Ici je note dans ton message que tu parles d'une feuille.

Peux-tu préciser s'il s'agit de toutes les feuilles du classeur ou d'une seule feuille.

A te relire

Dan

J'ai 3 feuilles dans mon fichier et je ne souhaite cacher que les lignes de la première feuille. D'ailleurs, je n'avais pas remarqué qu'elle agissait sur toutes les feuilles. Si je peux entrer cette commande dans cette case à cocher, ce serait encore mieux.

Private Sub Tirage_Click()

If Tirage.Value = True Then

[D1] = "Go"

Else

[D1] = "Stop"

End If

End Sub

Quand Tirage.Value = True

Alors ligne 3 à 9 et 19-25 sont visibles et 10-16 et 26-32 sont invisibles

ey quand Tirage.Value = False, le contraire.

Au départ, Tirage.Value = False

Au passage, aurais-tu une bonne référence à me conseiller pour apprendre? Un bon livre qui parle d'Excel en général. Formule et VBA.

Amicalement.

re,

Pour associer à ton code PRIVATE, il faudrait que je vois un exemple de ton fichier notamment pour la case à cocher.

Sinon essaye ce code :

Option Explicit

Sub cache()
'Macro par Dan pour Ericf - Excel Pratique le 06/03/08
Dim cel As Range, plage As Range
Set plage = Union(Rows("10:16"), Rows("26:32")) '
On Error Resume Next
With ActiveSheet
If [F10] = 7 Then
Rows("19:25").EntireRow.Hidden = True
plage.EntireRow.Hidden = False
For Each cel In Range("c3:c9")
cel.EntireRow.Hidden = True
Next cel
End If
End Sub

Les lignes10 à 16 et 26 à 32 sont considérées comme cachées. Cette opération ne se fait pas dans la macro.

Amicalement

Dan

Salut Nad-Dan,

La procédure que tu m'as envoyé affiche une erreur.

Elle me renvoit l'erreur suivante :

Compile error :

Expected End With

A+

Bonsoir,

Modifie la fin du code comme ceci

End if

End With

End sub

Amicalement

Nad

Salut Nad-Dan,

tu me dis : Les lignes10 à 16 et 26 à 32 sont considérées comme cachées. Cette opération ne se fait pas dans la macro.

Si elles sont cachées parce que je les ai moi-même cachées lors de la création du fichier, elles peuvent être révélées par la macro non?

Amicalement.

re,

...que les lignes 10 à 16 et 26 à 32 apparaissent. Elles seront préalablement cachées.

La macro ne cache pas les lignes 10 à 16 et 26 à 32. Si ces dernières sont cachées, la macro les rend visibles. Si elles sont visibles au départ, elle restent visibles après exécution de la macro.

A te relire

Dan

Wow, ça fonctionne à un petit détail prêt. Quand la condition de cellule, ici F10, est remplie, la macro ne se déclenche pas. Je dois le faire manuellement et là, ça fonctionne parfaitement.

Serait-il possible de l'inclure dans cette case à cocher qui active un tirage aléatoire quand elle est cochée? D1 ne sert qu'à vérifier l'état de la case et est la condition du déclenchement du tirage aléatoire.

Private Sub Tirage_Click()

If Tirage.Value = True Then

[D1] = "Go"

Else

[D1] = "Stop"

End If

End Sub

Merci

Re,

D1 est la cellule qui contient GO ou STOP.

Quel est la rapport qu'il doit y avoir entre F10 et D1.

Si ces une condition supplémentaire, tu peux essayer de placer comme ceci:

...
[D1] = "Go
If [F10]>0 then call cache
else
....

C'est cela que tu veux ?

A te relire

Amicalement

Dan

C'est parfait!

Merci beaucoup pour ton aide Nad-Dan.

Ça fonctionne A1.

Salut à tous,

grâce à vous, j'ai presque terminé mon projet. Il ne me reste qu'un petit détail à régler.

Quand je protège mes feuilles et mon fichier, la macro ne fonctionne plus adéquatement alors qu'elle fonctionne parfaitement sans la protection de la feuille.

Malheureusement, je ne peux pas vous afficher de lien ici car je ne peux pas convertir mon fichier dans une version antérieure à Excel 2007.

Je vais tenter de vous expliquer ce que j'ai.

Ma feuille contient 2 tableaux et 1 case à cocher.

Dans le premier tableau les lignes 3 à 9 sont apparentes et permettent une saisie alors que les lignes 10 à 16 sont cachées et son verrouillées.

C'est la même chose pour les lignes 19 à 25 et 26 à 32 du 2e tableau.

Quand j'active la case à cocher, les premières lignes de chaque tableau disparaissent et les lignes cachées apparaissent. Les lignes cachées sont une copie des lignes apparentes. Ce qui veut dire, qu'une fois la case à cocher activée, ce sont les lignes qui ne permettent plus de saisie qui apparaissent avec les informations saisies auparavent.

Les 14 lignes de saisie doivent contenir une donnée pour que la case à cocher effectue une action. C'est une condition vérifiée par la cellule I9 dans la feuille.

Voici la macro :

Private Sub Tirage_Click()

If Tirage.Value = True Then

[C3] = "Go"

Tirage.Enabled = False

If [I9] = 14 Then Call cache

End If

End Sub

Sub cache()

'Macro par Dan pour Ericf - Excel Pratique le 06/03/08

Dim cel As Range, plage As Range

Set plage = Union(Rows("10:16"), Rows("26:32")) '

On Error Resume Next

With ActiveSheet

If [I9] = 14 Then

Rows("19:25").EntireRow.Hidden = True

plage.EntireRow.Hidden = False

For Each cel In Range("c3:c9")

cel.EntireRow.Hidden = True

Next cel

End If

End With

End Sub

Un dernier petit détail. Mes saisies s'effectuent dans la colonne C et lorsque la macro est activée, la cellule C3 change sa donnée pour "Go". Cela n'affecte en rien ma valeur de C10, qui est la valeur originale de C3, puisque celle-ci est figée au moment de la saisie.

Votre aide serait grandement appréciée pour corriger ce petit détail de protection.

Merci à vous.

Bonjour,

Quelle est la macro qui ne fonctionne pas ?

Essaye :

Private Sub Tirage_Click() 
If Tirage.Value = True Then 
Activesheet.unprotect
[C3] = "Go" 
Tirage.Enabled = False 
If [I9] = 14 Then Call cache :Activesheet.protect
End If 
End Sub 

Sinon dis nous oµ cela bloque.

A te relire

Dan

Merci Nad-Dan pour cette solution que tu m'as proposé et désolé d'avoir été si long à répondre. Le code que tu as ajouté fonctionne super bien.

Cependant, il y a encore deux problèmes à régler avec ce fichu programme et je voulais savoir, puisque ces problèmes ne sont pas reliés au problème de suppression des lignes, si j'étais mieux d'ouvrir des nouveaux fils ou si je pouvais continuer ici.

Merci à vous

Salut le forum

Si ta question n'a pas rapport avec la question de base, tu ouvres une nouvelle

ficelle (Question).

Et tu coches [Résolu] pour celle-ci.

Mytå

Rechercher des sujets similaires à "supprimer afficher lignes"