Transformé contenu celulle en valeur

  • Initiateur de la discussion Initiateur de la discussion fredh
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fredh

XLDnaute Occasionnel
[R] Transformé contenu celulle en valeur

Bonsoir a tous

Voila j'extrait du contenu d'une base de donnée vers excel.
je rencontre 2 probleme pour pouvoir travaillé correctement :
1er : les dates ne sont pas reconnu par excell en effet elle sont de la forme
2008-03-14 18:35:54
meme si je formate la celulle en JJ.MM.AAAA HH:MM:SS (edit TT.MM.JJJJ hh:mm:ss c'est pour excell en allemand) le contenu reste inchangé. C'est seulement lorsque j'edite la celulle et que j'appuis sur enter que le contenu se cale a droite de la celulle (reconnu comme valeur)

2em : les valeur du genre -0.015 ne sont non plus pas reconnu. C'est seulement lorsque j'edite la celulle et que j'appuis sur enter que le contenu se cale a droite de la celulle (reconnu comme valeur)


J'ai créer une macro pour travaillé le contenu mais vu que c'est du "texte" je ne peut rien faire.

Je désir donc dans ma macros transformé tout les contenus des celulles en valeur.

j'ai essayé un truc du genre ceci mais ca me transforme que le contenu qui contien un . en valeur

With Range(Selection.End(xlToRight), Selection.End(xlDown))
.Replace What:=".", Replacement:=".", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End With

Pouvez vous svp me guider et m'aider pour resoudre ce facheux probleme

merci et @+
 
Dernière édition:
Re : Transformé contenu celulle en valeur

Salut fredh

TT.MM.JJJJ hh:mm:ss
: ?? TT ?? représente quelle type de valeur ?
met ton texte 2008-03-14 18:35:54 en A1
et essaie : Range("A1") = cdate(Range("A1"))

les valeur du genre -0.0.15 ne sont non plus pas reconnu.
Ben, moi je suis pas excel, mais je recannais pas non plus 😱
C'est une matrice une ligne 3 colonnes (0x,0y,15z) ? 😕
A+
 
Re : Transformé contenu celulle en valeur

Bonsoir bhbh

merci de repondre
Je cherche le moyens de faire cela par macro
de plus je n'ai pas compris ta methode

- étape 1 : Délimité ---> selectionné les celulles concerné
- étape 2: Désélectionne tout ---> ?
- étape 3 : choisis Date, format JMA ----> dejá fait car format JJ.MM.AAAA HH:mm:ss ( en allemand TT.MM.JJJJ hh:mm:ss car j'ai excel en Allemand)
 
Re : Transformé contenu celulle en valeur

RE,
Non, tu sélectionnes tes données (de A1 à A20, par exemple)
tu fais Data/("Convertir") en français, pour ce qui est de l'allemand, je ne sais pas....😱
Ensuite, les étapes.....

Edit, et pour les macros, l'enregistreur de macro......
 
Re : Transformé contenu celulle en valeur

Salut Gorfael

merci de repondre

le fornat de celulle que j'ai donné est pour un excell allemand donc en francais ca donne JJ.MM.AAAA HH:MM:SS (je vais corriger ca dans le 1er poste)

les valeur du genre -0.0.15 ne sont non plus pas reconnu.
tu m'etonne j'ai fait une erreur de frappe. merci
(je vais corriger ca dans le 1er poste)
 
Re : Transformé contenu celulle en valeur

Bonsoir à tous,

Je pense que tes données sont au format Texte.
Pour les convertir au format date ou nombre, réalise les étapes suivantes :
1/ dans une cellule vide, tape la valeur 1 en cellule A1 par exemple
2/ Copier la cellule A1
3/ Sélectionner les dates à convertir
4/ Edition/Collage spécial/Opération = multiplication et cliquer sur OK
5/ Normalement toutes les dates sélectionnées sont passées au format nombre
6/ Mettre le format personnalisé dans la colonne Date : DD.MM.JJJJ HH:MM

Recommencer l'opération pour les colonnes numériques
 
Re : Transformé contenu celulle en valeur

bhbh

j'ai fait un nouvell essai.
Dans le menu Donnée (Daten en allemand) je ne vois que convertir qui permet de faire cela. Mais c'est la conversion que j'utilise en generale pour importé de fichier csv ou autre.

J'ai donc tésté en macro et ca donne cela pour les date

.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), ThousandsSeparator:=" ", TrailingMinusNumbers:=True

Mais cela ne marche que pour une colonne

Dans mon fichier les colonnes ne sont jamais au meme endroit. je les reconnais donc avec ma macro, mais faire ce travail de rfeconnaissance puis de transformation pour toutes les colonnes tres contraignant.

J'avais esperé une methode pour "transformé toutes mes celulles en un coup.
 
Re : Transformé contenu celulle en valeur

Salut Cbea

merci de repondre

Ta soluce me convient mieux car elle fonctionne pour moi.
Il me reste a convertir cela pour ma macro

Pour l'instant en macros ca donne quelque chose comme ceci :
Range("A3671").Select
ActiveCell.FormulaR1C1 = "1"
Range("A3671").Select
Selection.Copy
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
Columns("C:C").Select
Application.CutCopyMode = False
Selection.NumberFormat = "dd/mm/yyyy hh:mm:ss"
Columns("G:G").Select
Selection.NumberFormat = "0##0"

Il me reste plus qu'a adapté cela mais je rencontre des probleme ave c la creation d'une celulle qui contient 1 car je ne veux pas ajouté des celulle dans mon fichier.
 
Re : Transformé contenu celulle en valeur

re,

Voici une procédure qui formate toutes les cellules d'une feuille :
Code:
Public Sub Formater()
    Dim derlig As Long
    Dim dercol As Long
    Dim plage As Range
    Dim valCell As Range
    
    ' Dernière ligne contenant une donnée
    derlig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    ' Dernière colonne contenant une donnée
    dercol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
    ' Plage de cellules à traiter
    Set plage = Range(Cells(1, 1), Cells(derlig, dercol))
    
    ' Affectation d'une cellule avec la valeur 1
    Cells(1, dercol + 1).Value = 1
    
    ' Boucle sur toutes les cellules de la plage
    For Each valCell In plage
        ' Si la cellule contient une donnée, la traiter
        If valCell.Value <> "" Then
            ' Copier la cellule contenant la valeur 1
            Cells(1, dercol + 1).Copy
            ' Collage spécial avec une opération multiplication pour convertir les dates et les nombres
            valCell.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
                SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
        End If
    Next valCell

    ' Formater la colonne C
    Columns("C:C").NumberFormat = "dd/mm/yyyy hh:mm:ss"
    ' Formater la colonne G
    Columns("G:G").NumberFormat = "0##0"
    
    ' Enlever la valeur contenue dans la cellule
    Cells(1, dercol + 1).Value = ""
End Sub
 
Re : Transformé contenu celulle en valeur

Re

Cbea
Merci ca roule comme ca
J'ai juste adapté ta macro pour mon fichier et pour que ca aille plus vite.
En effet la recherche de chaque celulle, le teste et le remplacement prenait du temp.

' Dernière ligne contenant une donnée
derlig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
' Dernière colonne contenant une donnée
dercol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
Cells(1, dercol + 1).Value = 1
Cells(1, dercol + 1).Copy
' Collage spécial avec une opération multiplication pour convertir les dates et les nombres
Range(Cells(1, 1), Cells(derlig, dercol)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
' Enlever la valeur contenue dans la cellule
Cells(1, dercol + 1).Value = ""
Columns("C:C").NumberFormat = "dd/mm/yyyy hh:mm:ss"
Columns("G:G").NumberFormat = "0##0"


Voila le poste est resolue.

je vour remercie pour vos aide et votre rapidité de réponse.
J'espere un jour aussi etre capable de vous aidé....

Merci a tous et @+
 
Re : Transformé contenu celulle en valeur

Salut à toutes et tous
Code:
Sub test()
Dim Cel As Range
For Each Cel In Range([A2], [A65536].End(xlUp))
    Cel.NumberFormat = "dddd mmmm yyyy hh:mm;ss"
    Cel = CDate(Cel)
Next Cel
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour