Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Code VBA pour selectionner une ou plusieurs lignes en fonction du contenue (chaine de caractère) d'une cellule

Jerome-lost

XLDnaute Nouveau
Bonjour à tous,

Je tente de modifier sans grand succès un script vba pour que celui ci sélectionne les lignes en fonction du contenu d'une cellule (colonne B).
Ex: si la cellule B2 et/ou B6 contiennent "personnels de soins" ou "personnels de direction", la colonne 2 et/ou 6 sont sélectionnées.
A l'heure actuelle j'arrive juste à sélectionner toutes les lignes de la feuille
Je vous remercie pour le temps que vous voudrez bien passer sur mon probleme


Dim A As String
For Each cell In Range("B:B")
If cell.Value = "PERSONNELS DE DIRECTION ET PERSONNELS ADMINISTRATIFS" Then
A = cell.Row
End If

Next cell




End Sub
 

Jerome-lost

XLDnaute Nouveau
je vous fais parvenir le tableau en question.
En fait, les lignes à sélectionner sont les lignes 14, 15, 26, 49, 56, 64, 78 à partir du contenu des cellules de ces mêmes lignes en colonne B
Existe t'il un moyen pour ne tenir compte que d'une partie de la chaine de caractère de ces cellules ex: "PERSONNELS" afin de simplifier la macro ?
 

Pièces jointes

  • Tableau ETr.xlsx
    16.9 KB · Affichages: 6

vgendron

XLDnaute Barbatruc
en PJ ton fichier avec une macro

comme tu ne précises pas ce que tu souhaites faire une fois les lignes selectionnées, je les copie dans la feuille 1
va voir le code, je l'ai commenté pour expliquer
 

Pièces jointes

  • Tableau ETr.xlsm
    28 KB · Affichages: 18

Jerome-lost

XLDnaute Nouveau
en PJ ton fichier avec une macro

comme tu ne précises pas ce que tu souhaites faire une fois les lignes selectionnées, je les copie dans la feuille 1
va voir le code, je l'ai commenté pour expliquer
Merci Vgendron pour ton retour et surtout d'avoir explicité ton code , cependant ces lignes n'ont pas vocation à étre déplacées mais mis en forme dans le tableau d'origine (agrandissement de la taille des lignes "30" et mise en gras du contenu de la ligne ), aussi les tris automatiques ne sont pas utiles.

@ Fanfan 38, ta piste était bonne mais avec cell.select je n'arrive qu'à sélectionner la cellule disposant du contenu considéré à savoir ""PERSONNELS DE DIRECTION ET PERSONNELS ADMINISTRATIFS" et non pas sa ligne
 

vgendron

XLDnaute Barbatruc
dans ce cas. il suffit d'ajouter quelques lignes de codes
VB:
Sub Macro1()
With ActiveSheet
    .AutoFilterMode = False 'désactive le filtre auto
    LastLine = .UsedRange.Rows.Count 'dernière ligne utilisée dans la feuille
    Set ZoneToFilter = .Range("B13:U" & LastLine) 'on affecte la zone à filtrer à une variable
    
    ZoneToFilter.AutoFilter Field:=1, Criteria1:="=*Personnels*", Operator:=xlOr 'on applique le filtre
    ZoneToFilter.SpecialCells(xlCellTypeVisible).Select 'on selectionne les lignes filtrées
    Selection.RowHeight = 50 'hauteur des lignes
    Selection.Font.Bold = True 'mise en gras
    .AutoFilterMode = False 'desactive les filtres
End With
End Sub
 

Jerome-lost

XLDnaute Nouveau
Ta macro est redoutablement efficace , mais elle semble présenter une limite liée à la taille et à l'emplacement du tableau dans la feuille. Si le tableau venait à s'enrichir de nouvelles colonnes , il faudrait alors retoucher la macro ...

Autre petite question, si je souhaitais sélectionner dans mon tableau d'autres lignes qui ne disposent pas de "personnels" dans le libellé ex: PM, comment devrais je procéder ?
 

Mika2705

XLDnaute Nouveau
Bonjour,
Je reviens sur ce sujet car j'ai essayé ce script qui fonctionne bien mais qui ne sélectionne que la première cellule de la colonne, existe-t-il une commande équivalente à :
ZoneToFilter.SpecialCells(x1CellTypeVisible).Select
mais qui sélectionne toute la(les) ligne(s) ?
Merci pour votre aide.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…