Effacer valeurs de lignes de colonne B avec condition dans D

Bonjour,

Je souhaite analyser les valeurs de mesures d'un fichier statistique (.xlsx) d'une machine de tri sans qu'il y ait d'erreurs de mesures. Ces erreurs sont représentées dans le fichier par des NaN et des valeurs inférieures à 1.

Avec une macro déclenchée par un bouton dans un autre fichier excel : dans le fichier ci-joint, dès que la valeurs NaN s'affiche dans une cellule de la colonne D1:D80000, il faut que les valeurs de ligne soient effacées à partir de la colonne B jusqu'à la colonne AX. En fait, je veux garder intact la première colonne (A).

Par exemple avec le fichier ci-joint, la cellule D9 contient la valeur NaN donc les valeurs présentes dans les cellules de B9 à AX9, D9 comprise, doivent être effacées. Seule la cellule A9 reste. De même pour les lignes 20, 24, 38, 44, 56 et 57.

De plus, dans la même macro, dès qu'une valeur est inférieure à 1 dans une des cellules des colonnes D1:D80000, F1:F80000, H1:H80000 et J1:J80000, il faut faire pareil que les cellules avec NaN. Dans le fichier, c'est la ligne 67.

Au final, les colonnes de valeurs sont transférées dans un autre fichier excel qui traitera les données. Pour le transfert, j'ai déjà fait le code.

Etant novice en VBA macro, les seules macro que j'ai "réalisé", je les ai faite avec l'enregistreur.

Merci par avance de votre aide future car je patauge littéralement.

1620170502.xlsx (25.17 Ko)

Bonjour,

Sub Macro1()
plg = Range("A1").CurrentRegion
non = Array(4, 6, 8, 10)
For i = 1 To UBound(plg)
  If plg(i, 4) = "NaN" Then Range("B" & i & ":AX" & i).ClearContents
    For y = 0 To UBound(non)
     If plg(i, non(y)) < 1 Then Range("B" & i & ":AX" & i).ClearContents
    Next
 Next
End Sub

Bonsoir le fil, bonsoir le forum,

Une autre proposition qui utilise des variables tableaux, plus rapide que l'accès direct au cellules. C'est le code du bouton de ton autre fichier Excel :

Private Sub CommandButton1_Click()
Dim C As Workbook 'déclare la variable C (Classeur)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim NL As Long 'déclare la variable NL (Nombre de Lignes)
Dim NC As Byte 'déclare la variable NC (Nombre de Colonnes)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim TEST As Boolean 'déclare la variable TEST
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Set C = Workbooks("20170502.xlsx") 'définit le classeur C (à adapter, ici ton fichier exemple)
Set O = C.Worksheets(1) 'définit l'onglet O (à adapter, ici le premier onglet du classeur C)
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs TV
NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau des valeurs TV
ReDim TL(1 To NL, 1 To NC) 'redimensionne le tableau des lignes (autant de lignes que TV, autant de colonnes que TV)
For I = 1 To NL 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV
    TEST = False 'réinitialise la variable TEST
    'si la donnée en colonne 4 de TV est égale à "NaN"" ou inférieure à 1
    'si la donnée en colonnes 6,8 ou 10 de TV est inférieure à 1
    'redéfinit la variable TEST
    If TV(I, 4) = "NaN" Or TV(I, 4) < 1 Or TV(I, 6) < 1 Or TV(I, 8) < 1 Or TV(I, 10) < 1 Then TEST = True
    If TEST = True Then 'condition : si Test est [Vrai]
        TL(I, 1) = TV(I, 1) 'réupère dans la colonne 1 de TL uniquement la valeur de la donnée en colonne 1 de TV
    Else 'sinon (récupère la ligne entière)
        For J = 1 To NC 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
            TL(I, J) = TV(I, J) 'récupère dans la colonne J de TL la valeur de la donnée en colonne J de TV
        Next J 'prochaine colonne de la boucle 2
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
O.Range("A1").Resize(NL, NC).Value = TL 'renvoie le tableau TL dans A1 redimensionnée de l'onglet O
End Sub

Bonjour à tous

Une variante.

Les 2 fichiers doivent être ouverts.

Bye !

9desktop.zip (26.21 Ko)

Re,

Manquerait pas un p'tit fichier xlsm dans le zip, m'ssieur Gmb ?...

ThauThème a écrit :

Manquerait pas un p'tit fichier xlsm dans le zip, m'ssieur Gmb ?...

Ben.... Si !

Le voilà :

Bye !

14aide-a-saisie.xlsm (17.32 Ko)

Bonjour à tous,

Merci pour vos réponses !

J'ai pris les codes de sabV et ThauThème qui fonctionnent parfaitement

Rechercher des sujets similaires à "effacer valeurs lignes colonne condition"