Microsoft 365 Sélectionner de cellule avec certains critères

diwanegraf

XLDnaute Nouveau
Bonjour tout le monde, étant débutant de VBa je suis bloqué et demande de l'assistance auprès d'utilisateurs plus aguerris. J'aimerais trouver un code qui me permet de dans un tableau "DB" de sélectionner les lignes de la Colonne "F" n'ayant pas de cellule vide, de les sélectionner et regrouper sur une autre feuille "FinalDB". Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re

Bah, le filtre avancé fonctionne très bien avec le VBA
(ou plutôt se pilote très bien avec VBA)

Là, aussi de nombreux exemples dans les archives du forum.

Précisions
étant débutant de VBa je suis bloqué et demande de l'assistance auprès d'utilisateurs plus aguerris.
Le débutant c'est toi et l'aguerri c'est moi.

Maintenant, tu es libre ou pas de suivre mes conseils ;)
 

Staple1600

XLDnaute Barbatruc
Bonsoir

M'est avis que si tu joignais un fichier exemple, tu aurais surement plus de réponses :rolleyes:
Si tu avais lu la charte du forum, tu aurais joins ton fichier exemple dès ton premier message ;)
Et dans la même charte, la lecture de ceci
La Charte à dit:
2.2 – Tous les membres du forum répondent gracieusement aux questions.
Il n’y a donc aucune obligation de résultat et de délai. Les mots URGENT, SOS, AU SECOURS sont donc à bannir.
t'aurait évité d'écrire cela
mais toujours pas de solution VBA comme j'ai dis
 

diwanegraf

XLDnaute Nouveau
Merci pour vos remarques et à chacun sa compréhension, je sollicite l'expertise de personnes plus avisés humblement donc ne me faire pas dire ce que j'ai pas dis. Dans le tableau ci-joint la feuille non triée et la feuille triée comme je la veux.
“La connaissance, c'est partager le savoir qui nous fait grandir.”[Olivier LOCKERT]
 

Pièces jointes

  • diwanegraf.xlsm
    33.4 KB · Affichages: 3

diwanegraf

XLDnaute Nouveau
Solution trouvée Merci a toi qui partage ton savoir. Bref le Code regle mon probléme. Le voici pour les autres qui cherchent comme moi.
Sub Tridata( )
Application.ScreenUpdating = False

With Sheets("FinalDB")
.Cells.ClearContents
.Cells.Borders.LineStyle = xlNone
End With

With Sheets("BD")
.Range("A1").CurrentRegion.AutoFilter field:=6, Criteria1:="<>"
.Range("A1").CurrentRegion.SpecialCells(xlVisible).Copy Sheets("FinalDB").Range("A1")
If .FilterMode = True Then .ShowAllData
End With

With Sheets("FinalDB")
.Columns.HorizontalAlignment = xlCenter: .Columns.AutoFit
.Range("A1").CurrentRegion.Borders.Weight = xlThin
End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Oui je sais que c'est possible avec les filtres d'Excel
seulement je cherche une solution sous VBA

Staple à dit:
Bah, le filtre avancé fonctionne très bien avec le VBA
(ou plutôt se pilote très bien avec VBA)

La solution du message#8 c'est bien piloter le filtre en VBA, non ? :rolleyes:
Sauf qu'il s'agit ici du filtre automatique.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Donc comme je le disais au message#2
Ma version avec le filtre avancé
VB:
Sub Macro1()
Dim F As Worksheet: Set F = Feuil3
F.[K2].FormulaR1C1 = "=BD!RC[-6]<>"""""
Sheets("BD").Cells(1).CurrentRegion.AdvancedFilter Action:=2, CriteriaRange:=F.[K1:K2], CopyToRange:=F.[A1]
F.Cells(1).CurrentRegion.Columns.AutoFit: F.[K2] = ""
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Le double débutant(*) que tu es (en VBA et sur le forum), ignore sans doute que les vieux de la vieille Plus de 15 ans que je suis membre de ce forum tel que moi, qu'on appelle "les répondeurs" testent toujours leur formule ou leur code VBA avant de le poster.
Ce que je n'ai pas manquer de faire.
Donc pas rancunier pour un sou, j'ai ajouté
1) des commentaires explicatifs dans le code de ma macro
VB:
Sub Macro1_B()
'Déclarations des variables
Dim F As Worksheet
'ici  Feuil3 correspond au codename de la feuille : FinalDB
Set F = Feuil3
'on inscrit en K2 une formule qui sert de critère pour le filtre avancé
F.[K2].FormulaR1C1 = "=BD!RC[-6]<>"""""
'Ici on exploite le filtre avancé avec l'option Copier vers l'emplacement (ici vers la feuille BD en A1)
Sheets("BD").Cells(1).CurrentRegion.AdvancedFilter Action:=2, CriteriaRange:=F.[K1:K2], CopyToRange:=F.[A1]
'ici on formate les colonnes puis on efface le contenu de la cellule K2 de la feuille FinalDB
F.Cells(1).CurrentRegion.Columns.AutoFit: F.[K2] = ""
'tests OK sur Excel 2013 et Excel 2019
End Sub
2) une copie d'écran qui prouve que le code proposé fonctionne ;)
(ce je savais puisque je l'ai écrit et testé dans ton classeur exemple)
Résultatmacro.png

NB: Pour respecter la charte du forum, j'ai masqué les noms qui apparaissent dans ton classeur (car tu ne précises pas si ils sont fictifs ou pas)

(*) le mot débutant n'a rien de péjoratif dans ma prose.
On a tout débuter un jour avec Excel.
Il se trouve juste que moi, c'était en 1992.
 

Discussions similaires

Statistiques des forums

Discussions
312 214
Messages
2 086 309
Membres
103 174
dernier inscrit
OBUTT