Macro qui supprime des lignes qui ne contienne pas un nombre

Fermé
melvinou22 Messages postés 113 Date d'inscription jeudi 7 avril 2016 Statut Membre Dernière intervention 1 mars 2020 - 9 mai 2019 à 18:33
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 12 mai 2019 à 11:11
Bonjour,
J'ai un tableau excel qui ressemble a sa :



Comme vous pouvez le voir il y a des date et des nombres qui sont des température
sauf que toute les dates ne sont pas aligner et les température non plus

et la vous voyer 20 ligne mais il y en a 9000 en dessous

J'aimerai donc faire une macro qui regarde dans la colonne A et si la valeur est une température (donc si la valeur se trouve entre 10 et 40) Alors il supprime la ligne.

Cela devrai donner un résultat comme sa :


ou sinon mais c'est un peut plus compliquer il serait bien que la macro échange les deux cases
cela serais mieux car sa m’éviterai de perdre des valeurs

Mon problème est que je ne sais absolument pas comment faire.

Si quelqu'un peut m'aider merci Beaucoup.

Configuration: Windows 10 :p
A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 9 mai 2019 à 20:06
Bonjour,

Faire Alt F11 pour accéder à l'éditeur, insérer un module et mettre ce code:

Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
    Set FL1 = Worksheets("Feuil1") 'a adapter
    NoCol = 1 'lecture de la colonne 1
    For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
        If Len(Var) < 6 Then
FL1.Cells(NoLig, NoCol + 2) = Var
FL1.Cells(NoLig, NoCol) = FL1.Cells(NoLig, NoCol + 1)
FL1.Cells(NoLig, NoCol + 1) = FL1.Cells(NoLig, NoCol + 2)
FL1.Cells(NoLig, NoCol + 2) = ""
FL1.Cells(NoLig, NoCol).NumberFormat = "m/d/yyyy" ' adapter le format
End If
    Next
    Set FL1 = Nothing
End Sub


il ne reste plus qu'à lancer la macro

0
melvinou22 Messages postés 113 Date d'inscription jeudi 7 avril 2016 Statut Membre Dernière intervention 1 mars 2020 32
9 mai 2019 à 21:14
Merci beaucoup j'ai juste un problème ou il y a écrit "adapter le format" moi mon format c'est jj/mm/aaaa hh/mm du moins je crois mais il n'en eut pas donc que dois-je mettre
0
melvinou22 Messages postés 113 Date d'inscription jeudi 7 avril 2016 Statut Membre Dernière intervention 1 mars 2020 32
9 mai 2019 à 21:40
C'est bon j'ai trouver avec dd/mm/yyyy hh:mm sa matche comme je veut Merci Beaucoup.
Mais j'ai un autre problème
J'ai voulu ammeliorer le programme en rajoutant a la fin le fait de transformer toute la colonne B en Nombre Car pour les cases qui etait anciennement des dates il m'ecrit une date de 1900 et quand je selectionne a la main la colonne et que je change le format en "Nombre" il me remet correctement ma temperature mais quand je le fait avec la macro en rajoutant sa a la fin
Columns("B:B").Select
Selection.NumberFormat = "0.00"

et bien il ecrit bien ma temperature mais a gauche de la colonne avec écrit en erreur : " Nombre sous forme de texte"
comment je peut faire pour qu'il me le mette sous forme de nombre
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
9 mai 2019 à 21:53
Sers-toi de l’enregistreur de macro. Clique droit sur la cellule, Format de cellule, Nombre. Tu auras ta macro

Voilà

@+
0
melvinou22 Messages postés 113 Date d'inscription jeudi 7 avril 2016 Statut Membre Dernière intervention 1 mars 2020 32
10 mai 2019 à 20:49
Et bien c'est comme sa que j'ai recupere les ligne
Columns("B:B").Select
Selection.NumberFormat = "0.00"

Mais quand j'ai enregistrer la macro sa a fonctionner et quand c'est la macro qui le fait sa ne marche pas
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
11 mai 2019 à 08:09
Il faut le mettre dans ta boucle comme pour le format date:

Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
    Set FL1 = Worksheets("Feuil1") 'a adapter
    NoCol = 1 'lecture de la colonne 1
    For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
        If Len(Var) < 6 Then
FL1.Cells(NoLig, NoCol + 2) = Var
FL1.Cells(NoLig, NoCol) = FL1.Cells(NoLig, NoCol + 1)
FL1.Cells(NoLig, NoCol + 1) = FL1.Cells(NoLig, NoCol + 2)
FL1.Cells(NoLig, NoCol + 2) = ""
FL1.Cells(NoLig, NoCol).NumberFormat = "dd/mm/yyyy hh:mm" 
FL1.Cells(NoLig, NoCol + 1).NumberFormat = "0.00"
End If
    Next
    Set FL1 = Nothing
End Sub


Voilà c'est tout simple!

@+
0