Sélection de lignes par une cellule

Bonjour,

j'ai une macro à développer, j'ai utilisé vba il y a 2/3 ans dans mes études mais plus depuis et clairement je bloque..

la fonction de la macro est de sélectionner des lignes à partir du contenu d'une de leurs cellules, puis de les copier et les coller dans une autre feuille.

Sur l'excel joint en exemple, le but serait de copier les lignes ayant un "1" dans la colonne "sélection de données", d'ignorer celles dont les cellules sont vides, et de coller la sélection dans la feuil2 les unes à la suite des autres.

Si une personne peut me dépanner merci à elle

4excel-forum.xlsx (12.18 Ko)

Bonjour,

Pourquoi utiliser VBA alors qu'un filtre sur la colonne "Select ion données" te donne le même résultat ?

Bonjour,

Pourquoi utiliser VBA alors qu'un filtre sur la colonne "Select ion données" te donne le même résultat ?

Bonjour, cette macro est destinée à être utilisée dans un fichier avec beaucoup de données (fichier de 4k à 6k lignes et une 30aine de colonnes) et on m'a demandé d'automatiser le fichier avec une macro, pour directement avoir une nouvelle feuille avec les lignes souhaitées, le filtre masque-t-il les autres lignes lorsqu'il est actif ?

Bonjour, cette macro est destinée à être utilisée dans un fichier avec beaucoup de données (fichier de 4k à 6k lignes et une 30aine de colonnes) et on m'a demandé d'automatiser le fichier avec une macro, pour directement avoir une nouvelle feuille avec les lignes souhaitées, le filtre masque-t-il les autres lignes lorsqu'il est actif ?

Le filtre gère sans problème un tel nombre de lignes. Les lignes avec 0 sont alors masquées (mais pas supprimées). Les lignes affichées peuvent éventuellement être copiées ailleurs.

Pour accéder rapidement au filtre, sélectionnez la ligne d'en-tête de votre tableau puis faites "Données" --> "Filtrer". Sinon, sélectionnez l'ensemble du tableau et faite "Insertion" --> "Tableau".

Attention, l'en-tête doit être constituée d'une seule ligne, sans cellules fusionnées (voir onglet 1 du fichier en PJ).

Sinon une solution en macro (mais qui n'apporte rien de plus) :

Sub ExtraireSousBDD()

Dim Lig As Long, Sel As Range

Lig = 1 'Implique la présence d'une en-tête
Sheets("SousBDD").Cells.ClearContents 'Efface les anciennes données de la feuille de destination
Sheets("BDD").Rows(1).Copy Sheets("SousBDD").Rows(1) 'Copie l'en-tête
For Each Sel In Sheets("BDD").Range("Tableau1[sélection données]") 'Boucle sur le tableau1
    If Sel = 1 Then 'Si selection = 1
        Lig = Lig + 1 'Incrémente la ligne
        Sel.EntireRow.Copy Sheets("SousBDD").Range("A" & Lig) 'Copié-collé
        Application.CutCopyMode = False
    End If
Next Sel

End Sub
8excel-forum.xlsm (21.01 Ko)
Rechercher des sujets similaires à "selection lignes"