Problème nombres format texte

bonjour,

j'ai trouvé une macro super de Thauthème (comme d'habitude du super boulot !), vraiment super mais j'ai un soucis.

lorsque j'applique la macro les nombres en formats textes d'une des colonne

image

deviennent

image

comment garder les nombres intacts sans les arrondir ?

merci d'avance

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Long 'déclare la variable J (incrément)
Dim K As Long 'déclare la variable K (incrément)
Dim L As Long 'déclare la variable L (incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Set OS = Worksheets("Feuil1") 'définit l'onglet source OS (à adapter à ton cas)
TV = OS.Range("A1:J" & Cells(65536, 1).End(xlUp).Row) 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 1)) = "" 'alimente le dictionnaire avec la donnée en colonne 1 de TV
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les éléments du tableau temporaire TMP
    On Error Resume Next 'gestionndes erreurs (en cas d'erreur passe à la ligne suivante)
    Set OD = Worksheets(TMP(J)) 'définit l'onglet de destination OD (génère une erreur si cet onglet n'existe pas)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position
        Set OD = ActiveSheet 'définit l'onglet OD
        OD.Name = TMP(J) 'renomme l'onglet OD
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    OD.Cells.ClearContents 'efface toutes les cellules de l'onglet OD (au cas où l'onglet existait déja))
    OD.Range("A1").Resize(1, UBound(TV, 2)).Value = Application.Index(TV, 1) 'renvoie en A1 redimensionnée, la ligne de titre (la ligne 1 du tableau des valeurs TV)
    K = 1: Erase TL 'initialise la variable K, efface le tableau des valeurs TV
    For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
        If TV(I, 1) = TMP(J) Then 'si la donnée ligne I colonne I est égale à la donnée TMP(J)
            ReDim Preserve TL(1 To UBound(TV, 2), 1 To K) 'redimensionne le tableau des lignes TL (autant de lignes que TV a de colonnes, K colonnes)
            For L = 1 To UBound(TV, 2) 'boucle 3 : sur toutes les colonne de TV
                TL(L, K) = TV(I, L) 'récupère en ligne L de TL la donnée en colonne L de TV (=> transposition)
            Next L 'prochaine colonne de la boucle 3
            K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 2
    OD.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'renvoie dans A2 redimensionné de l'onglet OD, le tab;eau TL transposé
Next J 'prochaien élément de la boucle 1
End Sub

Bonsoir Yoda60

Il faut poser la question à Thauthème

A+

bonjour

merci tu as raison , j'hésite toujours avec les messages privés

merci Bruno

Re,

Un peu plus sérieusement car c'était un joke vu que tu le citais dans ta demande
Aux dernières nouvelles il était hospitalisé, pas certain qu'il puisse te répondre

Peux-tu déposer ton fichier que l'on puisse regarder en pas à pas ce qui se passe exactement

A+

Bonjour à tous,

sur excel les nombres sont limités à 15 chiffres.
Au-delà, la seule façon de garder la précision est de les mettre (les laisser en l'occurence) au format texte.
eric

merci messieurs

4test.xlsm (20.41 Ko)

rappel de la doléance :)

lorsque j'applique la macro les nombres en formats textes d'une des colonne

image

deviennent

image

comment garder les nombres intacts sans les arrondir ?

De plus pour les onglets créer si on peut tous les mettre en paysage pour être déjà prêt à imprimé c'est top..

ci joint le fichier demandé, merci de votre aide.

Heuuu.

As-tu lu et qu'est-ce que tu n'as pas compris dans ce que j'ai écrit au-dessus ?
sur excel les nombres sont limités à 15 chiffres.

On peut ajouter... significatifs

heu merci, j'ai bien lu et ne comprend pas ta relance.

Actuellement sous format texte il sont visibles donc peut être peut on les laisser en format texte lors la copie vers les onglets créer.

Bruno m'a conseiller de mettre un fichier , ce que j'ai fait.

cdt

Bonsoir,

avez vous essayé de dimensionner les deux tableaux en "String" afin de signifier à VBA que ce sont des valeurs alphanumérique afin qu'il n'opère pas d'arrondis ?
Dim TV() As String, TL() As String, Tmp() As String

@ bientôt

LouReeD

bonsoir LouReed,

aie cela ne prend pas

image

cdt

peut-être les parenthèses que j'ai ajouté à la déclaration de TV...

@ bientôt

LouReeD

non LouReed,

cela ne le fait pas.

image image

Re,

Après test et vérification de ton premier fichier Yoda60, il faut juste changer la ligne de fin en

    With OD.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1))
      .NumberFormat = "@"
      .Value = Application.Transpose(TL) 'renvoie dans A2 redimensionné de l'onglet OD, le tab;eau TL transposé
    End With

Bonne soirée

Re,

moi je voyais plutôt de mettre la colonne F au format texte avant écriture :

    If Err <> 0 Then 'condition : si une erreur a été générée
        Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position
        Set OD = ActiveSheet 'définit l'onglet OD
        OD.Name = TMP(J) 'renomme l'onglet OD
        Columns(6).NumberFormat = "@"
    End If 'fin de la condition

insérer la ligne Columns(6).NumberFormat = "@"

Et bien c'est super !!

Je pensais qu'en variable tableau c'était cuit pour résoudre le problème..

J'ai pris soins de tester les 2 méthodes et c'est nickel.

merci à vous trois !

bonne soirée

Rechercher des sujets similaires à "probleme nombres format texte"