je sollicite un coup de pouce de votre part pour me dépanner sur le problème suivant.
J'ai hérité de fichiers excel dont quasiment chaque cellule est "polluée" par un premier caractère indésirable à gauche " ' " (une apostrophe).
Comment l'enlever d'un coup d'un seul en VBA ? (ce qui compte tenu du nombre de fichiers et de colonne concernés sera à coup sur le plus rapide)
En pièce jointe, un des fichiers concernés.
NB : toutes les infos à "retraiter " commencent en ligne 2 ; le fichier joint ne comporte qu'une seule fiche employée mais les autres fichiers comportent bien plus de lignes (toutes à retraiter). La cellule peut être vide, ou être numérique et ne pas comporter ce caractère indésirable.
Sub carac()
For Each cel In Range([A2], [A2].SpecialCells(xlCellTypeLastCell)).SpecialCells(xlCellTypeConstants, xlTextValues)
cel.Value = Replace(cel.Value, "'", "")
Next
End Sub
merci tout d'abord pour ton aide mais le code VBA que tu me proposes doit pouvoir s'appliquer à toutes les lignes à partir de 2 et pas seulement à la deuxième (mes fichiers comportent plusieurs employés, donc plusieurs lignes).
Peux tu compléter ta proposition ? (et me préciser dans quel module je dois coller ton code étant donné que je dois retraiter plusieurs fichiers)
La solution de skoobi fonctionne mais peut poser des problemes
Quand on met des formules dans un classeur avec une ' devant, c'est pour les mettre en valeur et non pas en formule histoire de les afficher, c'est aussi une solution pour pouvoir les reutiliser en macro
Quand on fait reference dans une formule à une feuille qui comporte des espaces, on met aussi des cotes pour encadrer le nom de la feuille
maintenant les textes : 'Rue de l'invasion provoquera le meme probleme
La solution replace va remplacer toutes les ' par rien du tout dans l'exemple donné
autre macro qui traite uniquement le 1er caractere
Code:
sub supp_cote()
dim cel as range
for each cel in range("A2:A" & range("A65536").end(xlup).row) ' defini le bloc complet
if left(cel,1) = "[B][COLOR="Red"]'[/COLOR][/B]" then cel = right(cel,len(cel)-1) ' Retire le 1er si c'est une cote
next
end sub
"[A2].SpecialCells(xlCellTypeLastCell)" : ceci veut dire qu'il prend toutes les cellules des autres ligne également
Tu le colles dans chaque module des fichiers correspondants.
Edit: salut wilfried_42, d'accord avec toi, à Sylvie de voir si celà lui convient tout de même....
merci pour vos précisions à l'un et à l'autre, mais j'ai beau exécuter l'une ou l'autre des macros proposées (collées dans les modules de feuille 1) ... rien se se passe et les apostrophes ne trépassent pas.
Je dois louper un truc ... mais lequel ??