Lancer une macro en remplissant une cellule

Le
eredrobal
Bonjour à tous et à toutes,

Je n'ai pas trouvez le code pour faire en sorte que lorsque je rentre une
valeur en E3 par exemple, (La qté rentrée en E3 génére des résultats dans les
lignes dessous) toutes les lignes vide de E4 à Exx (xx en fonction de la
longueur du tableau) soient masquées.

Merci de votre aide
Eric
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #16723961
Salut à toi

Mets ce code dans le VBA de la feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("E3").Address And Range("E3")<>"" Then
Range("E4", "E" &
Range("E65535").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End If
End Sub

Celà devrait faire

Dis moi !!!!
michdenis
Le #16725111
| Range("E4", "E" &
|
Range("E65535").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden
= True

J'ai des doutes sur les syntaxes de ta ligne de commande...!
Je suppose que tu voulais écrire :

Range("E4:E" & _
Range("E65535").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden
= True

si tu utilises la propriété "SpecialCells", il est préférable de
la faire précéder de On error resume next ... car lorsqu'elle
ne trouve pas de cellules corrrespondantes, elle se plante....
FFO
Le #16725231
Bonjours michedenis

Effectivement lacune de ma part
Heureusement que tu veilles
Donc le code à prendre en considération :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("E3").Address And Range("E3")<>"" Then
On Error Resume Next
Range("E4", "E" &
Range("E65535").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End If
End Sub

Merci pour ta judicieuse remarque !!!!
FFO
Le #16725221
Rebonjours michedenis

Je rebondis sur ton autre remarque concernant ma syntaxe

Que tu utilises :

Range("E4", "E" &
Range("E65535").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

ou

Range("E4:E" & _
Range("E65535").End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden
= True

Les 2 fonctionnent et donnent le même résultat tout au moins chez moi

Je pense qu'il doit en être de même pour toi

Fais des essais
michdenis
Le #16725531
| Les 2 fonctionnent et donnent le même résultat tout au moins chez moi

OK... il y a des automatismes pas facile à contrecarrer

;-)
eredrobal
Le #16726011
Terrible !!
Les 2 fonctionnent aussi chez moi. Merci de votre diligence....
Eric

"michdenis" a écrit :


| Les 2 fonctionnent et donnent le même résultat tout au moins chez moi

OK... il y a des automatismes pas facile à contrecarrer

;-)




eredrobal
Le #16726221
Puis-je abuser de votre expertise?
Même principe, dans un autre fichier les cellules sont vides mais en fait
c'est le résultat d'une formule qui fait que la cellule est vide. Existe-til
une solution?

J'ai une vision plus lointaine de l'évolution de mon fichier. Si l'on peut
masquer les lignes comme précédement, peut-on faire appraitre les lignes
masquer si dans la cellule d'à coté on rentre une valeur. Plus clairemement :
Si je rentre un valeur en E3 cela me masque les lignes 5, 7, 10. Maintenant
si je rentre en E4 une valeur,
et que sur la ligne 5 cela me met un résultat, il faut que la ligne 5
apparaissent. Etc...

Suis clair?

Eric


"michdenis" a écrit :


| Les 2 fonctionnent et donnent le même résultat tout au moins chez moi

OK... il y a des automatismes pas facile à contrecarrer

;-)




michdenis
Le #16726621
| Même principe, dans un autre fichier les cellules sont vides mais en fait
| c'est le résultat d'une formule qui fait que la cellule est vide.
Existe-til
| une solution?

Cette façon de procéder évite de boucler sur l'ensemble de
la plage de celllules !

'----------------------------------
Sub test()
Dim X As Long
X = Range("B65536").End(xlUp).Row

'Choisis une colonne libre de ta feuille
'celle de ton choix
With Range("G1:G" & X)
'ici la colonne B représente celle de tes formules
.Value = Range("B1:B" & X).SpecialCells(xlCellTypeFormulas).Value
'Masque toutes les lignes ou la formule retourne ""
.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
'Libère la colonne utilisée
.Value = ""
End With

End Sub
'----------------------------------



| Si je rentre un valeur en E3 cela me masque les lignes 5, 7, 10.
Maintenant
| si je rentre en E4 une valeur,
| et que sur la ligne 5 cela me met un résultat, il faut que la ligne 5
| apparaissent. Etc..

Si ta ligne E4 est masquée, comment fais-tu pour saisir une donnée ?
suis-je clair ?
michdenis
Le #16726761
Et la ligne On Error resume next s'applique aussi en début de procédure !


"michdenis"
| Même principe, dans un autre fichier les cellules sont vides mais en fait
| c'est le résultat d'une formule qui fait que la cellule est vide.
Existe-til
| une solution?

Cette façon de procéder évite de boucler sur l'ensemble de
la plage de celllules !

'----------------------------------
Sub test()
Dim X As Long
X = Range("B65536").End(xlUp).Row

'Choisis une colonne libre de ta feuille
'celle de ton choix
With Range("G1:G" & X)
'ici la colonne B représente celle de tes formules
.Value = Range("B1:B" & X).SpecialCells(xlCellTypeFormulas).Value
'Masque toutes les lignes ou la formule retourne ""
.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
'Libère la colonne utilisée
.Value = ""
End With

End Sub
'----------------------------------



| Si je rentre un valeur en E3 cela me masque les lignes 5, 7, 10.
Maintenant
| si je rentre en E4 une valeur,
| et que sur la ligne 5 cela me met un résultat, il faut que la ligne 5
| apparaissent. Etc..

Si ta ligne E4 est masquée, comment fais-tu pour saisir une donnée ?
suis-je clair ?
eredrobal
Le #17297181
Bonjour michdenis,
Désolé pour le retard.
Tu me dis "Si ta ligne E4 est masquée, comment fais-tu pour saisir une
donnée ? suis-je clair ?"
Les saisies ne se feront que dans la ligne 2. Toutes les autres lignes
seront protégées à l'écriture.
Je vais seulement tester ta solution. Je te tiens au courant.
Merci pour tout
Eric


"michdenis" a écrit :

Et la ligne On Error resume next s'applique aussi en début de procédure !


"michdenis"
| Même principe, dans un autre fichier les cellules sont vides mais en fait
| c'est le résultat d'une formule qui fait que la cellule est vide.
Existe-til
| une solution?

Cette façon de procéder évite de boucler sur l'ensemble de
la plage de celllules !

'----------------------------------
Sub test()
Dim X As Long
X = Range("B65536").End(xlUp).Row

'Choisis une colonne libre de ta feuille
'celle de ton choix
With Range("G1:G" & X)
'ici la colonne B représente celle de tes formules
.Value = Range("B1:B" & X).SpecialCells(xlCellTypeFormulas).Value
'Masque toutes les lignes ou la formule retourne ""
.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
'Libère la colonne utilisée
.Value = ""
End With

End Sub
'----------------------------------



| Si je rentre un valeur en E3 cela me masque les lignes 5, 7, 10.
Maintenant
| si je rentre en E4 une valeur,
| et que sur la ligne 5 cela me met un résultat, il faut que la ligne 5
| apparaissent. Etc..

Si ta ligne E4 est masquée, comment fais-tu pour saisir une donnée ?
suis-je clair ?






Publicité
Poster une réponse
Anonyme