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

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
 

rocky9

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

Bonsoir,

Merci pour la reponse, j'ai essayé mais cela n'a pas filtré.
Le même tableau a été recollé sans avoir était filtré par inférieur ou égal à la cellule E1.
 

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.


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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…