probleme de selection

  • Initiateur de la discussion Initiateur de la discussion Francis
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Francis

Guest
Bonsoir
Je débute en Vba et j’ai écrit un petit programme pour cacher les lignes ne contenant pas une expression dans une plage (C1:G 250).
Il fonctionne seulement sur la colonne C. (Parce que je ne sais pas sélectionner les colonnes C à G !)
Quelqu'un pourrait-il m'aider?
Merci pour votre aide
Francis

Sub cherche_valeur()
valtest = InputBox("entrez la valeur à rechercher")

For Each ligne In Range("c1:g250")
r = ligne.Row
chercher = Application.Find(valtest, Cells(r, 3))
If (IsError(chercher)) Then _
Cells(r, 3).EntireRow.Hidden = True
Next

MsgBox "Pas de " & valtest & " dans la plage testée !"

End Sub
 
Bonsoir Francis

Quelques modifs dans la macro.

Sub Recherche_Valeur()
Dim Plage As Range, Cell As Range
Dim ValTest As Variant, AddressUne As Variant

Application.ScreenUpdating = False
With Sheets("Feuil1").Range("C1:G250")
ValTest = InputBox("Entrez la valeur à rechercher")
If ValTest = "" Then Exit Sub
Set Cell = .Find(What:=ValTest)
If Not Cell Is Nothing Then
AddressUne = Cell.Address
Do
Cell.EntireRow.Hidden = True
Set Cell = .FindNext(Cell)
Loop While Not Cell Is Nothing And Cell.Address <> AddressUne
Else
MsgBox ("Pas de " & ValTest & " dans la plage testée !")
End If
End With
Application.ScreenUpdating = True
End Sub

Cordialement

CBernardT
 
Bonsoir
Tout d’abord merci pour votre travail et je vous en remercie. Votre travail correspond exactement à mon cahier de charge.
Mais ma souris a été plus vite que ma pensée. Je désire en réalité garder uniquement les lignes où existe cette expression.
Donc il faut revenir à mon secours.
Merci d’avance
Francis
 
Bonsoir CBernardT.
Je vois que l’entraide à travers le Net fonctionne bien et cela rend bien des services.
Donc merci pour votre rapidité de votre réponse et les explications de votre programme à l’aide des lignes vertes.
Etant relativement ignare en VBA, serait il possible de me « traduire » la ligne If Application.CountIf (Cell.EntireRow.Range("C1:G1"), ValTest) = 0 And Cell.EntireRow.Hidden = False Then.
Bien entendu il n’y a aucun caractère d’urgence.
Je vous remercie pour votre entraide et vous félicite car cela correspond exactement à ce que je voulais. (Je trie des noms de ville dans une base de données généalogiques).
Un bonsoir cordial de Charente Maritime
Francis
 
Bonsoir Francis

La puissance des propriétés "EntireRow" et "EntireColumn" ainsi d'ailleurs que la propriété "Offset" est d'offrir des outils souples pour calculer de nouveaux objets Range à partir d'une plage d'origine.


Explications sur la ligne de code :
If Application.CountIf (Cell.EntireRow.Range("C1:G1"), ValTest) = 0 And Cell.EntireRow.Hidden = False Then

code à deux conditions :
If (Si) Condition1 And (Et) Condition2 then
Action 1
Else
Action 2
End If

Si les deux conditions sont réalisées alors Action 1 sinon Action 2.


Application.CountIf (), c'est la fonction Nb.si dans les formules.

La propriété EntireRow renvoie toute la ligne de la cellule Cell et .Range("C1:G1") définit la plage entre les colonnes C à G de la ligne de la cellule Cell.

Cell.EntireRow.Hidden = False

Cette propriété a la valeur True si la ligne entière de la cellule Cell est masquée et False si la ligne n’est pas masquée.

Cordialement

CBernardT
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
803
Réponses
8
Affichages
1 K
Réponses
22
Affichages
3 K
Réponses
1
Affichages
1 K
Retour