Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Marsu23

XLDnaute Nouveau
Bonjour,

Voilà, j'aimerai archive dans une autre feuille des lignes avec la condition suivante : si l'action est 'traité et soldé' envoyer la ligne vers la feuille d'archive.

Merci d'avance,
Marsu23

[file name=ESSAI_20060218145238.zip size=14111]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ESSAI_20060218145238.zip[/file]
 

Pièces jointes

Salut Marsu23, Dan,

Avec la macro suivante, ca devrait fonctionner :
Code:
Sub archive()
Dim i As Integer
Dim lig As Integer

Application.ScreenUpdating = False
Application.Goto Sheets('Données').Range('A3')
For i = 3 To Range('A65536').End(xlUp).Row
    If Cells(i, 5).Value = 'Traité et soldé' Then
        Rows(i).Copy
        Application.Goto Sheets('ARCHIVE').Range('A65536')
        Selection.End(xlUp).Offset(1, 0).Select
        lig = ActiveCell.Row
        Rows(lig).Select
        ActiveSheet.Paste
        Sheets('Données').Select
    End If
Next i
End Sub


Tiens nous au courant.

@+
 
Bonjour à tous,

En relation avec le lien que je t'ai donné voici une macro qui fera ce que tu demandes.

Code:
Sub archive()
Dim i%
Dim ligne%
Application.ScreenUpdating = False
Sheets('Données').Range('A3').Activate
For i = 3 To Range('A65536').End(xlUp).Row
If Cells(i, 5).Value = 'Traité et soldé' Then
With Sheets('ARCHIVE')
 ligne = .Range('A65536').End(xlUp).Row + 1
    .Cells(ligne, 1) = Sheets('Données').Cells(i, 1).Value
    .Cells(ligne, 2) = Sheets('Données').Cells(i, 2).Value
    .Cells(ligne, 3) = Sheets('Données').Cells(i, 3).Value
    .Cells(ligne, 4) = Sheets('Données').Cells(i, 4).Value
    .Cells(ligne, 5) = Sheets('Données').Cells(i, 5).Value
    .Cells(ligne, 6) = Sheets('Données').Cells(i, 6).Value
    .Cells(ligne, 7) = Sheets('Données').Cells(i, 7).Value
End With
End If
Next i
Application.ScreenUpdating = False
End Sub

Les données seront copiées dans la feuille ARCHIVE et reste dans ta feuille données bien sûr.

Si pb n'hésite pas

😉
 
Salut Marsu23, Dan,

Pour la macro que je t'avais proposée hier, voici la macro modifiée :

Code:
Sub archive()
Dim i As Integer
Dim lig As Integer

Application.ScreenUpdating = False
Application.Goto Sheets('Données').Range('A1')
For i = Range('A65536').End(xlUp).Row To 3 Step -1
    If Cells(i, 5).Value = 'Traité et soldé' Then
        Rows(i).Copy
        Application.Goto Sheets('ARCHIVE').Range('A65536')
        Selection.End(xlUp).Offset(1, 0).Select
        lig = ActiveCell.Row
        Rows(lig).Select
        ActiveSheet.Paste
        Sheets('Données').Select
        Rows(i).Delete
    End If
Next i
End Sub

Au cas ou tu prefererai la macro de Dan, je me suis aussi permis d'apporter la modification pour faire ce que tu souhaites :
Code:
Sub archive_v2()
Dim i%
Dim ligne%

Application.ScreenUpdating = False
Sheets('Données').Range('A3').Activate
For i = Range('A65536').End(xlUp).Row To 3 Step -1
    If Cells(i, 5).Value = 'Traité et soldé' Then
        With Sheets('ARCHIVE')
            ligne = .Range('A65536').End(xlUp).Row + 1
            .Cells(ligne, 1) = Sheets('Données').Cells(i, 1).Value
            .Cells(ligne, 2) = Sheets('Données').Cells(i, 2).Value
            .Cells(ligne, 3) = Sheets('Données').Cells(i, 3).Value
            .Cells(ligne, 4) = Sheets('Données').Cells(i, 4).Value
            .Cells(ligne, 5) = Sheets('Données').Cells(i, 5).Value
            .Cells(ligne, 6) = Sheets('Données').Cells(i, 6).Value
            .Cells(ligne, 7) = Sheets('Données').Cells(i, 7).Value
        End With
        Rows(i).Delete
    End If
Next i
Application.ScreenUpdating = True
End Sub


D'ailleurs une petite question a Dan qui je pense repassera par la, que veut dire la declaration Dim i%, et plus précisement le %?

Bon dimanche a tous,

@+
 
Bonsoir,

Porcinet, ben voilà Celeda te l'a donné.

Comme tu le vois, '%' remplace 'as integer' dans une macro. Une découverte de Ti je crois. En tout cas c'est lui qui me l'a expliquée.

Une chose sur ta macro, je pense que tu omis l'instruction Application.ScreenUpdating = True à la fin de ton code.

Bon dimanche.


😉

Message édité par: dan, à: 19/02/2006 18:01
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
24
Affichages
2 K
Réponses
15
Affichages
3 K
Retour