Bonjour à tous,
J'ai sur une feuille des listes de données que je souhaite recopier (et effacer) vers une autre feuille suivant une condition.
J'ai déjà trouvé des sujets parlant de ça sur ce forum mais je n'ai réussi à correctement adapter le code:
Exemple1:
'' Passage FI en cours à FI soldées
Private Sub CommandButton1_Click()
' Boucle de lecture de la colonne N de la feuille "FI en cours"
' Lire chaque cellule ("cel" est un nom de variable qui représente la cellule en cours de lecture)
For Each cel In Sheets("FI en cours").Range("N:N")
' Teste le contenu de la cellule
' Pour éviter les différences de caractères, on transforme le contenu de "cel" en majuscules (UCase)
If UCase(cel.Value) = "OK" Then
' Si le contenu de "cel" est égal à "OK" alors on effectue les instructions contenues ente If Then et End If
With Sheets("FI soldée")
' Les références de cellules précédées d'un point s'appliquent à la feuille "restitution"
' On affecte à la variable "lg" le numéro de la 1ère ligne vide en colonne N de la feuille "FI soldée"
' Pour ce faire, on remonte du bas de la feuille ("N65536") jusqu'à la dernière cellule remplie ("End(xlUp).Row")
' et on ajoute 1 pour obtenir le numéro de la ligne vide située en-dessous
lg = .Range("N65536").End(xlUp).Row + 1
' Boucle de lecture des colonnes A à M de la feuille "suivi véhicule"
For cl = 1 To 8
' On affecte la valeur de la cellule lue à la cellule homonyme de la feuille "restitution"
.Cells(lg, cl) = Sheets("FI en cours").Cells(cel.Row, cl)
' puis on efface la cellule lue sur la feuille "FI en cours"
For c2 = 4 To 7
Sheets("FI en cours").Cells(cel.Row, c2) = ""
Next
Next
End With
End If
Next
End Sub
Exemple2:
Option Explicit
Sub Filtre()
Range("O2") = "N2=""ok"""
Range("A2:m" & Range("B65000").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Range("O1:O2"), CopyToRange:=Sheets("FI soldés").Range("A1:N1"), Unique:=False
Range("O2").ClearContents
End Sub
Je mets les 2 exemples en PJ
Merci à vous et bonne journée !