Format texte en format nombre

Bonjour,

J'ai créer une macro me permettant de copié coller des informations d'un Excel à un autre Excel. Les fichiers copier en question sont une extraction excel d'un logiciel de base de données. Le problème est que les informations sont sous forme de format texte, je ne peux donc pas les manipulé pour réaliser des statistiques, camembert, etc.. Est il possible de mettre automatiquement les cellules contenant des nombres au format texte ?

Merci de votre aide, mon code est le suivant :

Sub Rectangleàcoinsarrondis1_Cliquer()

Dim objOuvrir As FileDialog
Dim objFichiers As FileDialogSelectedItems
Dim wbsource As Workbook, wbdest As Workbook

Set objOuvrir = Application.FileDialog(msoFileDialogOpen)

With objOuvrir 'Affiche la fenêtre "Ouvrir"
    .Filters.Clear 'Efface les filtres existants.
    .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm" 'Définit une liste de filtres pour le champ "Type de fichiers".
    .Show
    Set objFichiers = .SelectedItems 'Définit les fichiers sélectionnés
End With

Worksheets("Armoires").Range("A2:BZ5000").ClearContents
Worksheets("Supports + Foyers").Range("A2:BZ5000").ClearContents

If Not objFichiers.Count = 1 Then Exit Sub 'On sort si aucun fichier n'a été sélectionné

Application.ScreenUpdating = False

Set wbdest = ThisWorkbook 'classeur exécutant où sera collée la feuille
Set wbsource = Workbooks.Open(objFichiers(1))

wbsource.Sheets("Armoire").UsedRange.Copy Destination:=wbdest.Sheets("Armoires").Range("A1") '<<<<ADAPTER
wbsource.Sheets("Support + Foyer").UsedRange.Copy Destination:=wbdest.Sheets("Supports + Foyers").Range("A1")
wbsource.Close False

Application.ScreenUpdating = True

Fin:
End Sub

Bonjour,

à essayer :

    Dim pl As Range
    Set pl = Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
    If Not pl Is Nothing Then
        Cells(Rows.Count, Columns.Count).Copy
        pl.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
    End If

ici agit sur la feuille active du classeur actif.
Si ça ne va pas il faudrait un exemple de feuille à traiter (anonymisée)
eric

Bonjour Clemroussi, Éric, bonjour le forum,

Ton code nous permet de bien voir la manière dont sont récupérées les données mais ne nous donne aucune idée sur les formats de ces données. Un fichier exemple serait le bienvenu pour nous permettre de te proposer un solution adéquate (comme Sheila... Moins de 55 ans ne comprendra pas...)

Bonjour,

Merci de votre aide, je vous joint mon fichier.

L'onglet 1 va permettre de sélectionné le fichier à copié. Je désire que certaine colonne (par exemple la CI) soit en format nombre de la feuille Support + Foyer.

16importationok.zip (288.78 Ko)

Bonjour à tous,

@ThauThème, on peut avoir 20 ans de moins et connaître Coluche et Sheila quand même 😉

Bonjour le fil, bonjour le forum,

Yes NoyeuxJoël !

@Clemroussi

C'est justement le fichier à télécharger que l'on voudrait. Pas celui qui permet de le télécharger...

Bonjour,

Je vous le joint ici. J'ai supprimé les informations car strictement confidentielle..

Merci à vous,

20test.xlsx (19.16 Ko)

S'il n'y a aucune valeur numérique en texte comment veux-tu que l'on voit ?
As-tu au moins testé ma proposition ?
eric

Re,

Tiens JoyeuxNoël, on a trouvé plus comique que Coluche...

Bonjour,

J'ai laissé des données en format texte dans la colone DU de la feuille Support + Foyer pour le test.

Avec votre code, ca ne fonctionne pas ,

CR

Bah chez moi ça fonctionne très bien

Bonjour,

Je met votre code à la suite du mien ( dans le même sub ) et ca modifie des cellules uniquement dans ma première feuille

Oui, c'est bien ce que j'avais écrit :

ici agit sur la feuille active du classeur actif.

A toi de boucler sur les feuilles du classeur désiré For each sh in worksheets

Bonjour,

Le code est le suivant ?

Sub es()
 Dim pl As Worksheet
  For Each pl In Sheets(Array("Armoires", "Supports + Foyers"))
pl.Activate
    Set pl = Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
    If Not pl Is Nothing Then
        Cells(Rows.Count, Columns.Count).Copy
        pl.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
    End If
Next pl
End Sub

Merci à vous ,

pl ne peux pas être As Worksheet et être utilisé également pour une plage.
Il faut une variable pour les feuilles, une autre pour la plage.

Si toutes les feuilles sont à faire comme je le suppose, tu n'as pas besoin de les lister.

    Dim pl As Range, sh As Worksheet
    For Each sh In wbsource.Worksheets
        Set pl = sh.Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
        If Not pl Is Nothing Then
            Cells(Rows.Count, Columns.Count).Copy
            pl.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
        End If
    Next sh

si le classeur à traiter n'est pas wbsource remplace par le bon, ou supprime wbsource. pour traiter l'actif
eric

Bonjour,

En rajoutant votre code à ma macro, il n'y a aucun changement. J'ai toujours le même message d'erreur : le nombre dans cette cellule est au format texte ou précédé d'une apostrophe. Il faut bien que j'ajoute votre code à l'intérieur de ma macro a la suite de ces lignes la ? :

wbsource.Sheets("Armoire").UsedRange.Copy Destination:=wbdest.Sheets("Armoires").Range("A1") '<<<<ADAPTER
wbsource.Sheets("Support + Foyer").UsedRange.Copy Destination:=wbdest.Sheets("Supports + Foyers").Range("A1")
wbsource.Close False

En faisant cela le message d'erreur suivant s'affiche : la methode worksheet de l'objet workbook a échoue

Merci de votre aide

Bonjour,

Ok j'ai trouvé mon erreur. Comment maintenant faire ceci a par pour les lignes 1 et 2 de chaque feuille ?

Tu te moques des lignes 1:2, qu'elles soient déjà en texte ne gêne pas.

Rechercher des sujets similaires à "format texte nombre"