VBA - Soucis avec LEFT ?

Bonjour à tous,

Je viens vous voir car j'ai un petit soucis avec un code VBA qui semble-t-il ne fonctionne pas...

Au boulot, je récupère un fichier CSV pour suivre l'apparition d'alarmes et les acquittements effectués pas les opérateurs.

Ce fichier je le traite afin d'en réaliser un rapport "propre" à rediffuser.

Mon problème est que, lorsque mes collègues écrivent les commentaires, certains oublient qu'il ne faut pas faire de retrait à la ligne. Du coup, je récupère un fichier .CSV pourri : la partie du commentaire renvoyé à la ligne atterrit dans la colonne 1...

Mon idée, pour corriger l'erreur, est de regarder chaque cellule dans la colonne 1 : si son texte commence par GRA ou Gra, passer à la cellule suivante, sinon effectuer la correction.

Or, le code que j'ai écrit (ci-dessous) ne fonctionne pas. J'ai déjà écrit d'autres codes de correction assez proches pour d'autres zones et eux fonctionnent. J'ai l'impression que mon erreur réside dans la recherche des caractères "GRA" ou "Gra".

'Correction des renvois à la ligne
For Each cel In Range("A2", Cells(lig, 1))
    Dim MyStr
    MyStr = Left(cel.Value, 3)
    If MyStr = "GRA" Or MyStr = "Gra" Then
    GoTo NextCel
    Else
        For i = 1 To 3
        If Cells(cel.Row, cel.Column + i).Value <> "" Then
        cel.Value = cel.Value & ", " & Cells(cel.Row, cel.Column + i).Value
        Cells(cel.Row, cel.Column + i).Value = ""
        End If
        Next i
    Cells(cel.Row - 1, CommAcq.Column).Value = Cells(cel.Row - 1, CommAcq.Column).Value & Chr(10) & cel.Value
    Rows(cel.Row).Delete shift:=xlUp
    End If
NextCel:
Next cel
End If

Quelqu'un aurait-il une piste pour corriger ce bug ? Où est mon erreur ?

Sinon, y a-t-il une autre façon de détecter les intrus ?

Merci d'avance pour votre aide.

Sha'

bonjour,

peux-tu mettre un extrait de ton csv ?

Bonjour h2so4, et déjà merci pour ta réponse.

Malheureusement, je ne pourrais pas mettre le fichier en .csv car contient des données confidentielles.

Cependant, je vous joins un exemple de ce que j'ai. C'est pas totalement réaliste mais ça peut aider à comprendre ce que cela donne.

A noter que dans ma macro, le CSV est déjà traité et les données sont "séparées" dans des colonnes différentes. Donc dans le fichier exemple, j'ai retranscris à peu près là où j'en suis dans la macro.

18sharney-left.xlsx (9.44 Ko)

Bonjour,

Ton fichier en retour ... à tester

A+

28sharney-left.xlsm (15.75 Ko)

Bonsoir frangy,

Merci pour le code. Je vais tester cela sur le véritable fichier demain (en adaptant un peu pour le vrai fichier).

J'ai reçu aussi une solution de dmaic par MP que je testerai. En fonction de, je vous tiens au courant.

Bonne soirée

Bonsoir frangy,

En mixant ton code, ce que j'avais fait et le code de dmaic, j'ai réussi à m'en sortir.

Etant donné que je suis parti rapidement du boulot après avoir trouvé, je n'ai pas les codes qui fonctionne sous les yeux mais je le mettrai ci-dessous.

Merci encore !

Sha'

Voici le code que j'ai adapté et qui fonctionne :

'Correction des renvois à la ligne
i = 2
While Cells(i, 1) <> ""
    If Not InStr(1, Cells(i, 1).Value, "GRA", vbTextCompare) > 0 Then
        For k = 1 To 3
        If Cells(i, 1).Offset(0, k) <> "" Then
        Cells(i, 1).Value = Cells(i, 1).Value & ", " & Cells(i, 1).Offset(0, k).Value
        Cells(i, 1).Offset(0, k).Value = ""
        End If
        Next k
        x = CommAcq.Column - 1
        Cells(i, 1).Offset(-1, x).Value = Cells(i, 1).Offset(-1, x).Value & Chr(10) & Cells(i, 1).Value
        Rows(i).Delete
    Else
    i = i + 1
    End If
Wend
Rechercher des sujets similaires à "vba soucis left"