[VBA] Correction code "Replace"

Bonjour,

Sauriez-vous me dire pourquoi ce code ne fonctionne pas sur un fichier sur une plage de données au format texte ?

Dim e As Range
    For Each e In Range(Cells(2, 36), Cells(r, 36))
    'For Each e In Range([AJ2], [AJ65536].End(xlDown))
        e.Value = Replace(e, "=", "'")
    Next e

L'idée ici est de remplacer "=" par " ' " dans la plage de données AJ2 : AJ"x".

J'obtiens l'erreur "incompatibilité de type" sur

e.Value = Replace(e, "=", "'")

J'ai ajouté un document Excel pour que vous puissiez jeter un œil à l'erreur. J'ai répété x fois la même colonne, mais c'est la 36ème qui doit être traitée.

L'origine du problème vient du fait que lorsque j'importe des données depuis un fichier .CSV, dans lequel, lorsque les données sont absentes, il est renseigné "-" ; une fois l'import réalisé, le "-" se retrouve précédé du signe "=", ce qui engendre des erreurs dans la suite de mon code.

Ne sachant pas comment changer cela durant l'import, je décide de le changer juste après, avant que le reste du code ne soit lancé.

Merci de votre attention,

Bonne journée !

12test-replace.xlsm (21.44 Ko)

bonjour,

ton fichier est très riche de contenu. peux-tu mettre une fichier avec des données ?

Il est effectivement beaucoup trop renseigné.

J'en ai joins un autre. Les deux avaient le même nom dans des formats différents et j'ai pas pris le bon.

J'ai essayé cette méthode :

r = Range("A" & Rows.Count).End(xlUp).Row
Set plage = Range(Cells(2, 36), Cells(r, 36))
    For Each d In plage
        d.Value = Replace(d, "=", "'")
    Next d
    

Même erreur.

bonjour,

une proposition de correction

Private Sub CommandButton1_Click()

    Dim r As Long, c As Long, a As Long, b As Long, f As Long
    r = Range("A" & Rows.Count).End(xlUp).Row
    c = Cells(1, Cells.Columns.Count).End(xlToLeft).Column

    Dim e As Range
    For Each e In Range(Cells(2, 36), Cells(r, 36))
        If e.HasFormula Then e.Value = Replace(e.Formula, "=", "'")
    Next e
End Sub

lorsque tu introduis une séquence de caractères qui commence par + ou - et que la suite ne contient pas un nombre, excel considère qu'il s'agit d'une formule et met le signe = devant.

si tu veux supprimer le signe égal tu dois modifier la formule, qui est accessible via la propriété .formula

attention si tu lances cette macro sur des cellules qui contiennent réellement des formules, les formules vont être transformées en texte.

Merci beaucoup pour toute l'aide apportée ! Cette partie la de mon document est maintenant parfaitement fonctionnelle.

Il ne reste plus qu'à résoudre un énorme problème et après tout devrait fonctionner comme souhaité !

Bonne fin de week-end !

Rechercher des sujets similaires à "vba correction code replace"