VBA extraire données d'une liste

rocky9

XLDnaute Nouveau
Bonjour,

Après avoir tant bien que mal écrit une macro avec l’enregistreur et internet, j’ai comme résultat le fichier ci-joint.

Après avoir renseigné un seuil de tolérance via inputbox, la macro effectué un tableau avec différentes heures.

J’aimerai à partir de cette liste pouvoir extraire les lignes étant inférieur ou égal au seuil de tolérance et les coller proprement sur une nouvelle feuille.

Je sèche vraiment sur le code à écrire pourriez vous me mettre sur la voie svp ?
Merci
 

Pièces jointes

  • Nouveau_Feuille_de_calcul_Microsoft_Excel.xls
    17.5 KB · Affichages: 157

kjin

XLDnaute Barbatruc
Re : VBA extraire données d'une liste

Bonsoir,
Pour le fun, avec le filtre élabored...
Code:
Sub Macro1()
Range("G1") = Range("B1")
Range("G2") = "<" & CDbl(Range("E1"))
Range("A1:B" & Range("A65000").End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "G1:G2"), CopyToRange:=Range("G4:H4"), Unique:=False
End Sub
...sinon
Code:
Sub Macro2()
Dim t(), i&, x&
For i = 2 To [a65000].End(xlUp).Row
    If CDbl(Cells(i, 2)) < CDbl(Cells(1, 5)) Then
        x = x + 1
        ReDim Preserve t(1 To 2, 1 To x)
        t(1, x) = Cells(i, 1)
        t(2, x) = Cells(i, 2)
    End If
Next
Range("G1").Resize(UBound(t, 2), 2) = Application.Transpose(t)
End Sub
A+
kjin
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA extraire données d'une liste

Bonsoir Rocky, Kjin, bonsoir le forum,

Kjin a parlé plus vite et plus mieux bien comme d'hab... Tant pis, j'envoie quand même mon idée. En pièce joint ton fichier modifié aveec la macro ci-dessous :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim x As Integer 'déclare la variable x (incrément de ligne)
Dim dest As Range 'déclare la variable dest (DESTination)
 
dl = Sheets("Feuil1").Cells(Application.Rows.Count, 2).End(xlUp).Row 'définir la dernière ligne éditée de la colonne B
For x = dl To 2 Step -1 'boucle inversée sur toutes les cellules éditées de la colonne B de la dernière à la seconde
    'si la valeur de la cellule est inférieur ou égale à la valeur de la cellule E1
    If Cells(x, 2).Value <= Sheets("Feuil1").Range("E1").Value Then
        Set dest = Sheets("Feuil2").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
        Range(Cells(x, 1), Cells(x, 2)).Copy dest 'copie les deux cellules de la ligne et les colle dans dest
        Rows(x).Delete shift:=xlShiftUp 'supprime la ligne des cellule tranférée
    End If 'fin de la condition
Next x 'prochaine cellule de la boucle
End Sub
 

Pièces jointes

  • Rocky_v01.xls
    41 KB · Affichages: 274

rocky9

XLDnaute Nouveau
Re : VBA extraire données d'une liste

Bonjour Robert,

j'ai adapté ta macro car j'ai rajouté une colonne en plus.

dl = Sheets("Liste Temps").Cells(Application.Rows.Count, 3).End(xlUp).Row
For x = dl To 3 Step -1
If Cells(x, 3).Value <= Sheets("Liste Temps").Range("F1").Value Then
Set dest = Sheets("En dessous du seuil").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
Range(Cells(x, 1), Cells(x, 3)).Copy dest
End If
Next x

Ca coince au niveau de:

Range(Cells(x, 1), Cells(x, 3)).Copy dest

Ca ne me copie plus l'extraction.
 
Dernière édition:

Discussions similaires

F
Réponses
15
Affichages
2 K
F

Statistiques des forums

Discussions
312 491
Messages
2 088 892
Membres
103 982
dernier inscrit
krakencolas