Copier cellules contenant "B" et les colonnes adjacentes

Cestmoi007 - 14 mai 2023 à 13:14
cestmoi007 Messages postés 2 Date d'inscription lundi 3 avril 2017 Statut Membre Dernière intervention 14 mai 2023 - 14 mai 2023 à 15:40

Bonjour,

J'ai une feuille de calcul ayant plusieurs colonnes. Ce sont les colonnes B,C et D qui m'intéressent. Je veux sélectionner toutes les cellules de la colonne C qui contiennent la lettre B genre ("C:C","B"&"*") puis ensuite copier toutes ces cellules mais également les cellules B et D aussi sur la feuille 2 plage A2:C20 par exemple.

Merci d'avance


Windows / Firefox 112.0

A voir également:

2 réponses

ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
14 mai 2023 à 13:18

Bonjour,

Une approche possible en VBA :

Sub CopierCellules()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim i As Long
    Dim j As Long
    Dim k As Long
    
    ' Définir les noms de feuilles de calcul
    Set ws1 = ThisWorkbook.Sheets("Feuille1")
    Set ws2 = ThisWorkbook.Sheets("Feuille2")
    
    ' Activer le filtre automatique
    ws1.Range("B1:D1").AutoFilter
    
    ' Filtrer les cellules de la colonne C qui contiennent la lettre "B"
    ws1.Range("B1:D1").AutoFilter Field:=3, Criteria1:="=*B*"
    
    ' Copier les cellules filtrées vers la feuille 2
    j = 2 ' Ligne de début sur la feuille 2
    For i = 2 To ws1.Range("C" & ws1.Rows.Count).End(xlUp).Row ' Parcourir les cellules filtrées
        If ws1.Range("C" & i).EntireRow.Hidden = False Then ' Vérifier si la ligne n'est pas masquée par le filtre
            ws2.Range("A" & j).Value = ws1.Range("B" & i).Value ' Copier la cellule de la colonne B
            ws2.Range("B" & j).Value = ws1.Range("C" & i).Value ' Copier la cellule de la colonne C
            ws2.Range("C" & j).Value = ws1.Range("D" & i).Value ' Copier la cellule de la colonne D
            j = j + 1 ' Passer à la ligne suivante sur la feuille 2
        End If
    Next i
    
    ' Désactiver le filtre automatique
    ws1.Range("B1:D1").AutoFilter
    
    ' Sélectionner la plage copiée sur la feuille 2
    ws2.Range("A2:C" & j - 1).Select
End Sub

0
cestmoi007 Messages postés 2 Date d'inscription lundi 3 avril 2017 Statut Membre Dernière intervention 14 mai 2023
14 mai 2023 à 15:40

Merci

mais à la dernière ligne :

ws2.Range("A2:C" & j-1).Select il me dit:

Erreur d'exécution '1004' La méthode Select de la classe Range a échoué

Ou pourrais-je trouver les définitions des codes (genre autofilter...Field....) en français

Merci encore

0