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

Lancer une macro en remplissant une cellule

11 réponses
Avatar
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

10 réponses

1 2
Avatar
FFO
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 !!!!
Avatar
michdenis
| 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....
Avatar
FFO
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 !!!!
Avatar
FFO
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
Avatar
michdenis
| Les 2 fonctionnent et donnent le même résultat tout au moins chez moi

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

;-)
Avatar
eredrobal
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

;-)




Avatar
eredrobal
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

;-)




Avatar
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 ?
Avatar
michdenis
Et la ligne On Error resume next s'applique aussi en début de procédure !


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

| 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 ?
Avatar
eredrobal
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" a écrit dans le message de news:

| 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 ?






1 2