Macro qui supprime des lignes qui ne contienne pas un nombre

melvinou22 Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   -  
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   -
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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   Statut Membre Dernière intervention   32
 
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   Statut Membre Dernière intervention   32
 
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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   Statut Membre Dernière intervention   32
 
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 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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