Suppression lignes

Bonjour,

Je souhaiterais conserver uniquement les lignes dont les valeurs pour la colonne A sont entières même si pour les autres colonnes le nombre est décimales. Faire le tri des valeurs uniquement en fonction de la colonne A, garder la valeur que si celle de la colonne A est entière, sinon supprimer toute la ligne.

J'ai des valeurs de 0 à 240 mais séparer de 0,04 et j'aimerai avoir que de 1 en 1 (0 1 2 3 4 5 6 ainsi de suite jusqu'à 240, pour avoir au total 240 valeurs et non environ 6000)

Quel macro puis je utiliser ? Je ne connais rien à ceci, j'ai lu quelque poste mais je n'arrive pas à trouver la bonne formule pour régler mon problème. Je joints mon fichier excel.

En vous remerciant par avance pour votre aide

12bc1-region-a.xlsx (100.86 Ko)

Bonsoir,

Ci-dessous, 2 méthodes.

La 1ère, un peu simple, fait ce que tu demandes en un peu plus de 3 secondes dans ton fichier (sur mon PC).

Le 2ème, un peu plus élaboré, ne met que 0.4 s

A toi de choisir...

Sub garde_entier()
Dim DerLig As Long, I As Long
Application.ScreenUpdating = False
DerLig = Cells(Rows.Count, 1).End(xlUp).Row
For I = DerLig To 3 Step -1
    If Int(Cells(I, 1)) <> Cells(I, 1) Then Rows(I).Delete
Next I
End Sub

Sub garde_entier2()
Application.ScreenUpdating = False
Range("Z2").FormulaR1C1 = "=INT(R[1]C1)<>R[1]C1"
Range("A2:B" & Cells(Rows.Count, 1).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("Z1:Z2")
Range("_FilterDataBase").Offset(1, 0).Resize(Range("_FilterDataBase"). _
     Rows.Count - 1).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
ActiveSheet.ShowAllData
Range("Z2").Clear
End Sub

Bon courage

Bonsoir Norbert, bonsoir le forum,

essaie comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim LAF As Range 'déclare la variable LAF (Lignes À Effacer)
Dim I As Long 'déclare la variable I (Incrément de ligne)

Set O = Sheets("BC1 région A") 'définit l'onglet O (à adapter)
TC = O.Range("A1").CurrentRegion 'définit le tableau de cellules TC
Set LAF = O.Range("A1") 'initialise la plage LAF des lignes à effacer
For I = 3 To UBound(TC, 1) 'boucle sur toutes les lignes I du tableau de cellule TC (en partant de la troisième)
    'si la valeur ligne I colonne 1 de TC convertie en double est différente de cette même valeur convertie en entier,
    'redéfini la plage LAF (la ligne I si LAF ne contient qu'une seule cellule, sinon, l'union de la plage LAF et de la ligne I)
    If CDbl(TC(I, 1)) <> CLng(TC(I, 1)) Then Set LAF = IIf(LAF.Cells.Count = 1, Rows(I), Application.Union(LAF, Rows(I)))
Next I 'prochaine ligne de la boucle
LAF.Delete 'efface la plage LAF
End Sub

[Édition]

Bonsoir CousinHub on s'est croisé et je navet (dans ce cas on peut...) pas vu ton post...

Bonjour,

Je vous remercie pour vos réponses, cela marche super bien ! Rapide et efficace, je recommande vraiment ce forum !!! Merci encore,

A bientôt

Rechercher des sujets similaires à "suppression lignes"