Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

déplacer ligne sous conditions

obyone

XLDnaute Occasionnel
bonjour,

j'essai de faire une macro pour pouvoir déplacer les lignes du tableau "accueil" si dans les colonnes 1, 2 et 3 il y a "lu"
alors les lignes correspondantes sont déplacées vers la feuille "archives"
je coince y a t il quelqu'un pour un peu d'aide

cordialement
 

Pièces jointes

  • forum.xlsm
    28.3 KB · Affichages: 36
  • forum.xlsm
    28.3 KB · Affichages: 42

Papou-net

XLDnaute Barbatruc
Re : déplacer ligne sous conditions

Bonsoir obyone,

Voici ton fichier modifié.

A +

Cordialement.
 

Pièces jointes

  • Copie de forum.xlsm
    25.4 KB · Affichages: 40
  • Copie de forum.xlsm
    25.4 KB · Affichages: 44

obyone

XLDnaute Occasionnel
Re : déplacer ligne sous conditions

bonjour papou,
merci cela fonctionne peux tu m'expliquer la construction de cette macro stp?
"ligne_vide = Feuil8.Cells(Rows.Count, 1).End(xlUp).Row
If Not Feuil8.Cells(ligne_vide, 1) = "" Then ligne_vide = ligne_vide + 1
For j = 1 To 8"
je ne comprend pas trop ce que vient faire la "feuil8"
merci
 

obyone

XLDnaute Occasionnel
Re : déplacer ligne sous conditions de date

bonjour,

encore une petite modification de la macro,
j'aimerais que si les 3 colonnes sont "lu" et que la date est dépassée de 30 jours alors on archive la ligne

mon probleme est que cela ne fonctionne pas que la date soit dépasse ou même qu'il y en est pas il l'archive, pourquoi?

merci
 

Pièces jointes

  • forum.xlsm
    26.1 KB · Affichages: 30
  • forum.xlsm
    26.1 KB · Affichages: 37

Papou-net

XLDnaute Barbatruc
Re : déplacer ligne sous conditions

Bonjour obyone,

Voici comment modifier ta macro pour prendre en compte le dépassement de date:

Code:
Sub Bouton3_Clic()
With Feuil1
  For i = .Cells(3, 1).End(xlDown).Row To 4 Step -1
    If .Cells(i, 5).Value = "lu" And .Cells(i, 6).Value = "lu" And .Cells(i, 7).Value = "lu" And CDate(.Cells(i, 3) + 30) < Date Then
        ligne_vide = Feuil8.Cells(Rows.Count, 1).End(xlUp).Row
        If Not Feuil8.Cells(ligne_vide, 1) = "" Then ligne_vide = ligne_vide + 1
        For j = 1 To 8
        Feuil8.Cells(ligne_vide, j).Value = .Cells(i, j).Value
        Feuil8.Cells(ligne_vide, 9).Value = Format(Now, "dd mmmm yyyy")
        Next j
        .Cells(i, 1).EntireRow.Delete
    End If
  Next i
End With
MsgBox "terminé"
End Sub
Pour répondre à ta question précédente, Feuil8 est le nom système (CodeName) de l'onglet "Archivage". Ce nom est défini automatiquement par XL lors de la création des onglets. Je préfère utiliser ce CodeName car si on change le nom de l'onglet il n'est nul besoin de corriger le code. Et, par ailleurs, c'est plus rapide à écrire que le nom de l'onglet (je sais, je suis paresseux du clavier, c'est dans mon caractère). J'ai profité de cette occasion pour faire de même avec l'onglet "Accueil" (Feuil1).

Bonne journée.

Cordialement.
 

obyone

XLDnaute Occasionnel
Re : déplacer ligne sous conditions

merci pour l'explication

j'avais aussi trouvé cela pour la comparaison de date

Sub Bouton3_Clic()
With Sheets("Accueil")
For i = .Cells(3, 1).End(xlDown).Row To 4 Step -1
If .Cells(i, 5).Value = "lu" And .Cells(i, 6).Value = "lu" And .Cells(i, 7).Value = "lu" And .Cells(i, 8).Value < DateDiff("d", 30, Date) Then
ligne_vide = Feuil8.Cells(Rows.Count, 1).End(xlUp).Row
If Not Feuil8.Cells(ligne_vide, 1) = "" Then ligne_vide = ligne_vide + 1
For j = 1 To 8
Sheets("Archivage").Cells(ligne_vide, j).Value = Sheets("Accueil").Cells(i, j).Value
Sheets("Archivage").Cells(ligne_vide, 9).Value = Format(Now, "dd mmmm yyyy")
Next j
Sheets("Accueil").Cells(i, 1).EntireRow.Delete
MsgBox "terminé"
End If
Next i
End With
End Sub


autre petite question j'aimerais qu'elle s’exécute au démarrage sans clic sur le bouton, comment puis je faire

stp
merci
 

Papou-net

XLDnaute Barbatruc
Re : déplacer ligne sous conditions

RE:

Pour exécuter la macro au démarrage:



- Double-clic sur "ThisWorkbook"

- Clic sur "Workbook" dans la liste déroulante de gauche

- "Open" apparaît par défaut dans la liste déroulante de droite

- Coller le code dans "Private Sub Workbook_Open()"

A +

Cordialement.
 

Discussions similaires

Réponses
6
Affichages
319
Réponses
3
Affichages
149
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…