chiffres sans valeur

  • Initiateur de la discussion André
  • Date de début
A

André

Guest
Salut le forum,
Une énigme à vous soumettre :
J'ai reçu, pour le boulot un fichier Excel de facturation. J'aurai voulu vérifier la somme totale, mais il a été impossible de faire additionner cette colonne de chiffres. Une autre colonne, dans la même feuille, fonctionnait correctement, mais pas celle que je voulais. J'ai pensé que mes chiffres étaient en format texte, mais impossible de changer le format (passer à plus de deux décimales, mettre en format monétaire, etc...). J'ai essayé avec la formule EPURAGE, mais rien n'a changé.
Finalement, j'ai contourné le problème en effaçant le premier caractère, ou ce que je crois être le premier caractère, car il était invisible. Maintenant, j'ai pu additionner, mais j'aimerai comprendre, et surtout avertir l'émetteur du fichier, car je n'aimerai pas me refaire toute une colonne à chaque fois...

Merci de votre attention, et j'espère de votre solution ........
André
 
@

@+Thierry

Guest
Bonsoir André, le Forum

Il arrive assez souvent lors de manipulation de fichiers entre diverses sources de bases de données et des conversions vers TXT ou autre qu'au final Excel hérite simplement d'un espace en début de chaque cellule...


Une petite macro comme ceci peut y remédier en un rien de temps.
Sub Nettoyage()
Dim Cell As Range

For Each Cell In Sheets("Sheet1").UsedRange
Cell.Value = LTrim(Cell)
Next
End Sub

NB : Ltrim si l'espace est à la gauche, Rtrim à droite, Trim pour Gauche ET Droite...

Bonne Soirée
@+Thierry

PS II si ce n'est pas un espace il faudrait connaître sa nature et son numéro Ascii...
 
A

andré

Guest
Salut André,

Cette question a déjà été posée ici, mais je ne retrouve pas le post.

Il s'agit d'un caractère non visible qui vient se poser devant le nombre et qui empêche l'addition.

Pour le repérer tu fais : =CODE(GAUCHE(ta cellule;1)) et tu obtiendras son numéro (de mémoire 1000 et quelque chose).

Ensuite tu sélectionne la colonne et tu fais un supprimer de : CAR(le numéro que la formule code t'a renseigné).

J'espère que c'est cela.

Ândré.
 
@

@+Thierry

Guest
PS III Si le tableau est immence...

Sub Nettoyage()
Dim Plage As Variant
Dim i As Integer, ii As Integer

Plage = Sheets("Sheet1").Range("A1:H1000")

For i = 1 To 8
For ii = 1 To 1000
Plage(ii, i) = LTrim(Plage(ii, i))
Next ii
Next i

Sheets("Sheet1").Range("A1:H1000") = Plage


End Sub

Bye suis à la bourre
@+Thierry
 
A

andré

Guest
Salut @Thierry,

Oups, sur la même longueur d'onde.
Oserais-je dire deux solutions issues du même bac de Duvel (lol).

A y réfléchir, tu ne m'as jamais dit si pour toi c'était des bouteilles à étiquette rouge (33 cl) ou verte (28 cl).

Pour revenir à la question, il serait peut-être plus simple d'essayer d'abord un SUPPRESPACE ou un SUBSTITUE.

Au plaisir de te revoir.
Ândré.
 
@

@+Thierry

Guest
hello Ândré & André & Co !

Je pense que si on parle bien d'un espace indésirable, la Fonction VBA TRim (ou RTrim, Ltrim) en VBA est exactement prévu pour faire ceci....

Maintenant si on veut le faire par Formule sur feuille, SUPPRESPACE doit en être la traduction, mais nécessite, si je ne m'abuse de passer par un tableau intermédiaire (ou l'insertion de colonnes etc)... Les deux boucles VBA poposées ci-dessus, le font directement sur les données (je conseille toutefois de garder un exemplaire d'origine en back-up)

Par contré Ândré, je ne connais pas la méthode "tu sélectionnes la colonne et tu fais un supprimer de : CAR(le numéro que la formule code t'a renseigné" et jusqu'à présent je remplaçais un CAR indésirable par la méthode remplacer...par "" (rien)

Et finalement Ândré, compte tenu de la haute confidentialité du truc je te réponds en Chr(lol)

Sub TopSecret()
Dim i As String, MessagePourAndre As String, Titre As String
i = Chr(32)

Titre = "Pour " & Chr(194) & Chr(78) & Chr(68) & Chr(82) & Chr(201)
MessagePourAndre = Chr(68) & i & Chr(85) & i & Chr(86) & i & Chr(69) & i & Chr(76) & i & i & _
Chr(82) & i & Chr(79) & i & Chr(85) & i & Chr(71) & i & Chr(69) & i & i & _
Chr(51) & Chr(51) & Chr(99) & Chr(108) & i & i & Chr(33) & Chr(33)

MsgBox MessagePourAndre & Chr(10) & Chr(10) & Chr(9) & Chr(9) & "lol, @+Thierry", , Titre
End Sub


Bonne soirée
@+Thierry
 
J

Jean-Marie

Guest
Bonsoir

Une toute petite intervention dans ce fil, la fonction =CODE(A1) retourne le numéro ASCII de la première lettre contenue dans la cellule A1, André, tu n'as pas besoin de faire un GAUCHE(A1;1)

@+Jean-Marie
 

Discussions similaires

Réponses
6
Affichages
344

Statistiques des forums

Discussions
312 514
Messages
2 089 220
Membres
104 065
dernier inscrit
il matador