Nombre stocké sous forme de texte

Bonjour,

J'ai fais une macro :

    Sheets("DATA").Select
    Range("A1").Select
    ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:= _
        False

Le problème, c'est que quand la macro colle les données, il y a un problème. J'ai un graphique qui se base sur ces résultats et les axes sont à 0 car le graphique ne reconnait pas les chiffres collés par la macro (nombre stocké sous forme de texte).

En revanche quand je colle les données par moi-même sans utiliser la macro, il n'y a pas de problème, les données sont au bon format.

Faut-il que j'ajoute dans ma macro une multiplication par 1? Çà me plait pas trop trop ...

Merci pour votre aide!

Bonjour,

tu peux utiliser cint (nombres entiers) ou clng (nombres à virgule) pour convertir ton texte en nombre, ou encore cnum() si tu veux rester en excel.

Bonjour,

Pourrais-tu joindre un extrait de ton fichier pour que nous comprenions la raison d'un copié/collé au format Texte ?

Merci

Voici mon fichier

https://www.excel-pratique.com/~files/doc2/Pour_Forum_Excel_Pratique2.xls

Je n'ai pas pu uploader toutes les feuilles car le fichier est trop volumineux.

En fait, je souhaite coller dans Excel des données qui proviennent d'un logiciel externe. Pour cela, j'ai crée une macro toute simple.

    Sheets("DATA").Select
    Range("A1").Select
    ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:= _
        False
    Range("A35:C83").Select
    Selection.ClearContents
    Range("A1").Select

En fait je pense qu'il faut que j'insère clng au moment où je colle les données non?

Merci par avance!

re,

Dans la procédure "collagedesresultatsbo", j'ai rajouté du code pour transformer le contenu de la cellule en numérique.

Fichier

Salut readi,

C'est pile ce qu'il me fallait. Je préfère avoir cela intégré directement dans la macro ça me fait gagner du temps.

Par contre, ça ne marche pas correctement. Au moment de la multiplication par 1 il semble y avoir un problème. Excel bugge à cette ligne:

        Range("C" & lgLig).Value = Range("C" & lgLig).Value * 1

Cela est hors de mes compétences

Merci pour vos conseils.

re,

Voici une nouvelle version : Fichier

Bonjour readi,

Le problème persiste ... les nombres sont toujours stockés au format texte. Il doit y avoir un problème dans la formule VBA.

Pour le moment, je vais faire une petite manip *1.

Merci pour ton aide en tout cas

8)

11form.xlsm (24.52 Ko)

RRR c'est énervant. Dès que je fais la manip à la main les nombres sont au bon format. Mais dès que j'utilise une formule Excel à chaque fois les résultats ne sont pas au bon format. Je ne comprends rien.

Cela est déjà arrivé à quelqu'un?

Bonjour,

Comme cela, je ne vois pas.

Il faudrait avoir la manipulation exacte.

Tu récupères les données à coller à partir d'un fichier ?

Comment utilises-tu la procédure "collagedesresultatsbo" ?

Lorsque j'exécute la procédure ci-dessous, les cellules passent bien au format "0.00%". Elles ne sont plus au format Texte.

Sub Test()
    Dim lgLig As Long

    ' Formater la colonne C en numérique
    For lgLig = 2 To Range("C" & Cells.Rows.Count).End(xlUp).Row
        If IsNumeric(Range("C" & lgLig).Value) Then
            Range("C" & lgLig).NumberFormat = "0.00%"
            Range("C" & lgLig).Value = Range("C" & lgLig).Value * 1
        End If
    Next lgLig
End Sub

Peux-tu faire un essai avec cette procédure et vérifier le format des cellules en colonne C ?

Merci

Bonjour readi,

Le problème persiste toujours. En fait avant de venir dans Excel, je copie des résultats que me donne un autre logiciel (Business Object). Les résultats BO sont copiés dans le presse papier et dans Excel, la macro "collagedesresultatsbo" ne fait que coller les résultats présents dans le presse papier. Ce que je ne comprends pas, c'est que quand je fais un coller classique (ctrl+v), les chiffres sont au bon format. Par contre dès que j'utilise une macro ce n'est pas au bon format. Même quand je demande à la macro de faire un *1, les résultats sont toujours au mauvais format.

Vous avez une idée d'où vient le problème?

Merci

re,

Dans la procédure "collagedesresultatsbo",

remplacer :

ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:=False

par :

ActiveSheet.PasteSpecial

Peux-tu faire un nouvel essai ?

Merci

Salut readi,

Oula je viens de faire la manip que tu m'as conseillée. En fait, ça me colle les résultats mais sous forme d'image. L'interface du logiciel Business Object arrive dans Excel. Les données ne sont donc pas exploitable, car elles sont dans l'image.

Regarde ce que ça donne :

https://www.excel-pratique.com/~files/doc2/bizarree.xls

Bizarre hein?

Salut readi,

Oula je viens de faire la manip que tu m'as conseillée. En fait, ça me colle les résultats mais sous forme d'image. L'interface du logiciel Business Object arrive dans Excel. Les données ne sont donc pas exploitable, car elles sont dans l'image.

Regarde ce que ça donne :

https://www.excel-pratique.com/~files/doc2/bizarree.xls

Bizarre hein?

Salut readi,

Oula je viens de faire la manip que tu m'as conseillée. En fait, ça me colle les résultats mais sous forme d'image. L'interface du logiciel Business Object arrive dans Excel. Les données ne sont donc pas exploitable, car elles sont dans l'image.

Regarde ce que ça donne :

https://www.excel-pratique.com/~files/doc2/bizarree.xls

Bizarre hein?

Bonne après-midi.

re,

Je ne sais plus où chercher ?

Le code VBA que je t'ai donné devrait faire l'affaire.

Depuis BO, tu n'as pas la possibilité d'exporter tes données vers Excel ?

sans utiliser de macro

les nombres sous forme de texte importé en tableau (a1:n300) dans la feuil1

dans la feuil2 a1=SUBSTITUE(Feuil1!A1;",";"."),recopier la formule jusqu’à ...

dan la feuil3 a1==ARRONDI(Feuil2!A1;2);recopier la formule jusqu’à ...

et les nombres dans la feuil3 sont converti

fikri

Bonjour Readi,

Merci pour tes solutions, j'aimerais utiliser ta solution mais j'aimerais savoir si le code suivant peut être adapté pour le faire à plusieurs colonnes non adjacentes ?

readi a écrit :

Bonjour,

Lorsque j'exécute la procédure ci-dessous, les cellules passent bien au format "0.00%". Elles ne sont plus au format Texte.

Sub Test()
    Dim lgLig As Long

    ' Formater la colonne C en numérique
    For lgLig = 2 To Range("C" & Cells.Rows.Count).End(xlUp).Row
        If IsNumeric(Range("C" & lgLig).Value) Then
            Range("C" & lgLig).NumberFormat = "0.00%"
            Range("C" & lgLig).Value = Range("C" & lgLig).Value * 1
        End If
    Next lgLig
End Sub

Peux-tu faire un essai avec cette procédure et vérifier le format des cellules en colonne C ?

Merci

Merci beaucoup

Bonjour,

on suppose que le copier est fait en dehors d'excel vu qu'il n'y en a pas dans le code (?)

Essaie en finissant par :

[C2:C1000].Value = [C2:C1000].Value

à condition qu'il n'y ait pas de caractères parasites (espace ou autre) dans ton copié, et que ton séparateur décimal corresponde.

eric

Hello,

Je ressors le sujet du grenier. Faisont gaffe avec la poussière

J'avais le même problème initial que psalliou2 , des fois en faisant venir des données d'autres fichiers les nombres ce mettaient automatiquement au format texte, certe pas toujours, mais ça restait chiant !

Voici ma solution pour régler définitivement le problème :

en reprennant l'exemple de psalliou2 ça donne :

With Sheets("DATA")

.Range("A1").value = round(.Range("A1"),0)

End with

Chez moi ça marche nickel !

Bien bonne journée

Rechercher des sujets similaires à "nombre stocke forme texte"