VBA supprimer ligne d’un tableau avec valeur entre 0.1 et 0.07

Bonjour à tous je viens vers vous pour un petit coup de main car je cherche à éliminer à chaque ligne de mon tableau les valeurs qui se trouve entre 0,1et 0,07 dans une des cellules de la ligne

Si il y a une bonne âme pour m’aider ça serait bien gentil car je ne suis pas assez fort en VBA.

Merci

Salut Eugenecolle,

comme ceci?

A adapter car je n'ai pas d'info concernant les limites de ton tableau...

Dim rCel As Range

For Each rCel In UsedRange
    If rCel.Value >= 0.01 And rCel.Value <= 0.07 Then rCel.Value = ""
Next

A+

Bonjour Curulis57

Je te remercie pour cette réponse rapide je teste la formule et je reviens vers toi.

Encore merci

Cher Curulis57

Voici Mon code complet pour plus d'info.

pour ma par cela ne fonctionne pas avec ton code car j'ai déjà des variables

merci à toi pour ton aide

Dim tablo, tabloR(), i&, c As Range

Sub VersTableauFinal(control As IRibbonControl)

tablo = Range("A2:AD" & Range("A" & Rows.Count).End(xlUp).Row)

ReDim tabloR(UBound(tablo, 1), 30)

For i = 1 To UBound(tablo, 1)

tabloR(i - 1, 0) = tablo(i, 3)

tabloR(i - 1, 1) = tablo(i, 1)

tabloR(i - 1, 2) = tablo(i, 6)

tabloR(i - 1, 3) = tablo(i, 4)

tabloR(i - 1, 4) = tablo(i, 5)

tabloR(i - 1, 5) = tablo(i, 8) & " " & tablo(i, 9) & " " & tablo(i, 10)

tabloR(i - 1, 6) = tablo(i, 12) & " " & tablo(i, 13)

tabloR(i - 1, 7) = tablo(i, 14)

tabloR(i - 1, 8) = tablo(i, 17)

tabloR(i - 1, 9) = tablo(i, 18)

tabloR(i - 1, 10) = tablo(i, 19)

tabloR(i - 1, 11) = tablo(i, 20)

tabloR(i - 1, 12) = tablo(i, 21)

tabloR(i - 1, 13) = tablo(i, 22)

tabloR(i - 1, 14) = tablo(i, 23)

tabloR(i - 1, 15) = tablo(i, 24)

tabloR(i - 1, 16) = tablo(i, 25)

tabloR(i - 1, 17) = tablo(i, 26)

tabloR(i - 1, 18) = tablo(i, 27)

tabloR(i - 1, 19) = tablo(i, 28)

tabloR(i - 1, 20) = tablo(i, 29)

tabloR(i - 1, 21) = tablo(i, 30)

Next i

Sheets("Tableau_final").Range("A2").Resize(UBound(tabloR, 1), 22) = tabloR

For Each c In Sheets("Tableau_final").Range("A2").Resize(UBound(tabloR, 1), 22)

c.BorderAround Weight:=xlThin

Next c

Sheets("Tableau_final").Activate

Dim l As Long

For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1

If Cells(l, "G").Value = "Technicienne de surface" Then Cells(l, 1).EntireRow.Delete

Next l

Dim Cellule As Range

For Each Cellule In Range("J2:V1500") ' ici tu modifies le champ

If Cellule.Value = 0 Then

Cellule.ClearContents

End If

Next

[A2].Sort key1:=[A2], Order1:=xlAscending, Header:=xlYes

End Sub

Et aussi pour répondre à ta question c’est un tableau qui est à 20 colonnes sur 1500 lignes.

Merci

Bonjour,

comme tu construis ton tableau, autant ne pas les mettre plutôt que les enlever après :

    For i = 1 To UBound(tablo, 1)
        If tablo(i, 3) > 0.1 Or tablo(i, 3) < 0.07 Then
            j = j + 1
            tabloR(j - 1, 0) = tablo(i, 3)
            tabloR(j - 1, 1) = tablo(i, 1)
            tabloR(j - 1, 2) = tablo(i, 6)
            '...
        End If
    Next i

eric

Merci pour ton aide

Cela ne fonctionne pas je n’arrive pas à intégrer ton code voici tout mon code avec les explications des lignes où il doit y avoir les suppressions si valeur entre Cela ne fonctionne pas je n’arrive pas à intégrer ton code voici tout mon code avec les explications des lignes où il doit y avoir les suppressions si valeur entre

Merci

code

Option Explicit

Dim tablo, tabloR(), i&, c As Range

Sub VersTableauFinal(control As IRibbonControl)

tablo = Range("A2:AD" & Range("A" & Rows.Count).End(xlUp).Row)

ReDim tabloR(UBound(tablo, 1), 30)

For i = 1 To UBound(tablo, 1)

tabloR(i - 1, 0) = tablo(i, 3)

tabloR(i - 1, 1) = tablo(i, 1)

tabloR(i - 1, 2) = tablo(i, 6)

tabloR(i - 1, 3) = tablo(i, 4)

tabloR(i - 1, 4) = tablo(i, 5)

tabloR(i - 1, 5) = tablo(i, 8) & " " & tablo(i, 9) & " " & tablo(i, 10)

tabloR(i - 1, 6) = tablo(i, 12) & " " & tablo(i, 13)

tabloR(i - 1, 7) = tablo(i, 14)

tabloR(i - 1, 8) = tablo(i, 17)

tabloR(i - 1, 9) = tablo(i, 18) ' > 0.1 < 0.07

tabloR(i - 1, 10) = tablo(i, 19)

tabloR(i - 1, 11) = tablo(i, 20) ' > 0.1 < 0.07

tabloR(i - 1, 12) = tablo(i, 21)

tabloR(i - 1, 13) = tablo(i, 22) ' > 0.1 < 0.07

tabloR(i - 1, 14) = tablo(i, 23)

tabloR(i - 1, 15) = tablo(i, 24) ' > 0.1 < 0.07

tabloR(i - 1, 16) = tablo(i, 25)

tabloR(i - 1, 17) = tablo(i, 26) ' > 0.1 < 0.07

tabloR(i - 1, 18) = tablo(i, 27)

tabloR(i - 1, 19) = tablo(i, 28) ' > 0.1 < 0.07

tabloR(i - 1, 20) = tablo(i, 29)

tabloR(i - 1, 21) = tablo(i, 30) ' > 0.1 < 0.07

Next i

Sheets("Tableau_final").Range("A2").Resize(UBound(tabloR, 1), 22) = tabloR

For Each c In Sheets("Tableau_final").Range("A2").Resize(UBound(tabloR, 1), 22)

c.BorderAround Weight:=xlThin

Next c

Sheets("Tableau_final").Activate

Dim l As Long

For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1

If Cells(l, "G").Value = "Technicienne de surface" Then Cells(l, 1).EntireRow.Delete

Next l

Dim Cellule As Range

For Each Cellule In Range("J2:V1500") ' ici tu modifies le champ

If Cellule.Value = 0 Then

Cellule.ClearContents

End If

Next

[A2].Sort key1:=[A2], Order1:=xlAscending, Header:=xlYes

End Sub

A tester :

Option Explicit

Dim tablo, tabloR(), i&, c As Range

Sub VersTableauFinal(control As IRibbonControl)
    Dim ok As Boolean, j As Long, k As Long, l As Long
    tablo = Range("A2:AD" & Range("A" & Rows.Count).End(xlUp).Row)
    ReDim tabloR(UBound(tablo, 1), 30)
    For i = 1 To UBound(tablo, 1)
        ok = tablo(i, 17) <> "Technicienne de surface"
        For j = 18 To 30 Step 2
            ok = ok And tablo(i, j) >= 0.07 And tablo(i, j) < 0.1
            If Not ok Then Exit For
        Next j
        If ok Then
            tabloR(k, 0) = tablo(i, 3)
            tabloR(k, 1) = tablo(i, 1)
            tabloR(k, 2) = tablo(i, 6)
            tabloR(k, 3) = tablo(i, 4)
            tabloR(k, 4) = tablo(i, 5)
            tabloR(k, 5) = tablo(i, 8) & " " & tablo(i, 9) & " " & tablo(i, 10)
            tabloR(k, 6) = tablo(i, 12) & " " & tablo(i, 13)
            tabloR(k, 7) = tablo(i, 14)
            tabloR(k, 8) = tablo(i, 17)
            For l = 9 To 21
                ' ********* mettre vide à la place de 0 **********
                tabloR(k, l) = IIf(tablo(i, l + 9) = 0, vbEmpty, tablo(i, l + 9))
            Next l
            k = k + 1
        End If
    Next i
    Sheets("Tableau_final").Range("A2").Resize(UBound(tabloR, 1), 22) = tabloR
    For Each c In Sheets("Tableau_final").Range("A2").Resize(UBound(tabloR, 1), 22)
        c.BorderAround Weight:=xlThin
    Next c
    Sheets("Tableau_final").Activate

    ' devenu inutile si : ok = ok And tablo(i, 17) <> "Technicienne de surface" est correct
    '    Dim l As Long
    '    For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
    '        If Cells(l, "G").Value = "Technicienne de surface" Then Cells(l, 1).EntireRow.Delete
    '    Next l

    ' devenu inutile si le IIf() est correct
    '    Dim Cellule As Range
    '    For Each Cellule In Range("J2:V1500")    ' ici tu modifies le champ
    '        If Cellule.Value = 0 Then
    '            Cellule.ClearContents
    '        End If
    '    Next
    [A2].Sort key1:=[A2], Order1:=xlAscending, Header:=xlYes
End Sub

Pourquoi 30 en 2nde dimension de tabloR ?

Merci d'utiliser l'icone </> pour garder le code plus lisible et avec son indentation.

eric

Bonjour

Voici le fichier car pas de tableau

merci

Si vous désirez des explications sur les manipulations du tableau revenir vers moi en tout cas encore un grand merci de prendre du temps pour moi

Je n'ai touché qu'à la fabrication du tableau, pas à son collage qui est inchangé. Revois ta partie

De toute façon le code de ton fichier est protégé...

eric

Désolé pour le mot de passe voici

Bonjour,

je cherche à éliminer à chaque ligne de mon tableau les valeurs qui se trouve entre 0,1et 0,07 dans une des cellules de la ligne

Déjà je pense que j'avais mal interprété car compris que tu voulais supprimer toute la ligne si une valeur n'était pas conforme.

Mais dans le code tu indiques > 0.1 < 0.07 ce qui est le contraire de "entre 0,1et 0,07"

Et les valeurs entre 0 (que tu veux supprimer) et 0.07 tu en fais quoi ? Tu les laisses ? Y'en-a-t'il d'ailleurs ?

Tu peux redire précisément et en détail ton besoin stp.

Par ailleurs tu veux supprimer les lignes avec ""Technicienne de surface" mais tu n'as que "Technicienne de" dans les cellules (?!?)

eric

Bonjour

Je suis désolé c’est sûrement moi qui me suis mal exprimé.

Sur le classeur que je t’ai Envoyer sur la première feuille il y a le tableau qui va être transformé dans un ordre précis comme tu l’as remarqué par compte les héros doivent être supprimé des cellules pas les lignes.

Et aussi les valeurs 0.01 et 0.08 la les lignes doivent être supprimées.

Tout en sachant que dans ce tableau de 900 lignes il n’y a que quatre lignes je pense qui contient ses valeurs.

Pour ma part je savais supprimer les lignes en dessous de 0.08

Mais alors il supprime toutes les lignes qui sont vides aussi ou 00.00 ce qu’il ne faut pas.

Je me doute que c’est compliqué simplement pour enlever de quatre lignes je me demande si c’est pas plus simple de les supprimer manuellement !!!

J’espère avoir été un peu plus précis que la première fois ?

Merci

Non, pas plus clair.

C'était 0.07, maintenant c'est 0.08

Et le 0.1 est devenu 0.01, mais dans les cellules la valeur exacte est 0.00999999977648258 (< 0.01 !)

Et aussi les valeurs 0.01 et 0.08 la les lignes doivent être supprimées.

Maintenant c'est à nouveau les lignes qu'il faut supprimer (?!?)

On ne sait toujours pas si c'est celles avec des données entre ces ces valeurs ou à l'extérieur qu'il faut supprimer.

Bref, j'abandonne ou fait toi aider par quelqu'un pour expliquer clairement et précisément

eric

Rechercher des sujets similaires à "vba supprimer ligne tableau valeur entre"