PROBLEME VBA copier ligne avec condition

Fermé
benwares Messages postés 3 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 15 octobre 2010 - 14 oct. 2010 à 15:33
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 15 oct. 2010 à 18:02
Bonjour,

J'ai un probleme assez urgent pr effectuer un travail.

Sur une feuille A, jai une liste avec pour la colonne X differente valeur type char (soit "ouvert", "fermé",.......).
Je souhaite copier sur une feuille B toute les lignes de la feuille A dont la colonne X a la valeur "fermé".

Si vous pouvez m'aider ca me serait d'une grande aide.

Merci d'avance.



A voir également:

3 réponses

Ninja94400 Messages postés 14 Date d'inscription vendredi 21 mars 2008 Statut Membre Dernière intervention 18 novembre 2010 1
14 oct. 2010 à 16:35
Bonjour benwares

Je te propose ce code, à adapter en fonction du nom exact de tes onglets etc.

Sub Copier_Ouvert()
    Dim Cellule_a_copier As Range
    Dim Fin_Colonne As Range
    
    Sheets("A").Select  'Sélectionne ton onglet où sont tes valeurs
    Set Plage = Range("X2", Range("X2").End(xlDown))  'Sélectionne toutes les cellules de X2 jusqu'au bout de la colonne
    
    For Each Cellule_a_copier In Plage
        If (Cellule_a_copier.Text = "Ouvert") Then 'Si la celulle contient le texte
            Sheets("A").Select
            Rows(Cellule_a_copier.Row).EntireRow.Copy 'Alors on copie
            
            Sheets("B").Select  'Sélectionne ton onglet où il faut coller les valeurs
            Set Fin_Colonne = Range("X65536").End(xlUp) 'On va chercher la dernière ligne renseignée
            Fin_Colonne.Offset(1, 0).Select 'On se déplace d'une ligne en dessous
            Rows(ActiveCell.Row).PasteSpecial Paste:=xlPasteValues 'On colle la ligne
        End If
    Next
End Sub


Tiens nous au courant si c'est bien ce que tu cherches !
1
benwares Messages postés 3 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 15 octobre 2010
15 oct. 2010 à 13:33
Bonjour,

Ca marche nikel! merci beaucoup. je sais pas pourquoi mais je comprends la logique de programmation une fois faite mais je n'arrive pas à reussir un programme qui fonctionne.

En tout cas merci bcp!!
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
14 oct. 2010 à 16:56
Bonjour,
Peut-être un peu plus "conventionnel" ?
Sub copieLigne()
Dim LigA As Long, LigB As Long
Dim Comp As String 'Pourrait être mis en paramètre dans l'appel de la sub.
    Comp = "Ouvert" 'Alors supprimer cette ligne
    LigB = 4 '1ère ligne ou copier
    With Sheets("Feuil1")
        For LigA = 1 To .Range("X65536").End(xlUp).Row
            If .Cells(LigA, "X") = Comp Then
                .Rows(LigA).Copy Sheets("Feuil2").Rows(LigB)
                LigB = LigB + 1
            End If
        Next LigA
    End With
End Sub

Si tu veux, par exemple, faire la même chose mais avec "Fermer" tu change juste la valeur de Comp.
A+
0
benwares Messages postés 3 Date d'inscription jeudi 14 octobre 2010 Statut Membre Dernière intervention 15 octobre 2010
15 oct. 2010 à 13:35
Merci, j'avoue qu'il y a un petit soucis (mais c'est possible que ce soit de ma faute en mettant le nom des feuilles), mais d'apres ce que je comprends il semble que tu ne tienes pas compte du parametre colonne de la feuille.

Dans tout les cas merci bcp.
A+
0
Ninja94400 Messages postés 14 Date d'inscription vendredi 21 mars 2008 Statut Membre Dernière intervention 18 novembre 2010 1
15 oct. 2010 à 13:45
Lol c'est vrai que ton code fait plus propre ^_^
Pour te répondre benwares, j'ai appris le VBA sur le tas. J'essaie de m'imaginer ce que j'aurai fais à la mano, et le transcris en code (d'où le fait qu'il ne soit peut-être pas très conventionnel, mais marche :D)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 oct. 2010 à 18:02
Re,
Feuil1 c'est ta feuille "A"
Feuil2 c'est ta feuille "B"
Quand à la colonne tu dis que c'est la colonne "X" ? c'est bien ce qui est sur mon code.
A+
0