fraction & format date dans excel

foufie

XLDnaute Nouveau
bonjour ,

j'ai des fractions (import ) qui ne sont pas reconnus par excel comme tel
( bien entendu j'ai déjà essaye avec les formats fraction / format special , collage special , ect
sans grande réussite , *1 , .....


soit elle sont au format date ( 01/12 ) devient > 01 decembre 2017
soit elle sont au format text "36 /1" reste "36 /1" et donc je ne peux pas ensuite tirer du plus grand au plus petit ( poar exemple )

pour le moment dans mes recherches ce qu'i s'approche le plus de mes besoin semble etre le code de ce post de " PierreJean "

Sub test()
For n = 1 To Range("C65536").End(xlUp).Row
If InStr(Range("C" & n), "/") = 0 Then
x = Format(Range("C" & n), "mm")
y = Format(Range("C" & n), "yy")
MsgBox (x & " " & y)
Range("C" & n).NumberFormat = "@"
Range("C" & n) = x & "/" & y
End If
Next n
End Sub

mais cela ne me donne pas le bon résultat
exemple 12 /1 chez moi au format nombre devient 42747 > avec ce code vba cela devient 1 /17 ce qui n'est pas un bon

12/1 > 42747,00 > devient 1 /17

https://www.excel-downloads.com/threads/coller-dans-excel-sans-reconnaissance-du-format-date.82151/

merci de votre aide car la je patauge ...
 

Pièces jointes

  • cote.xlsm
    12.1 KB · Affichages: 47

Modeste geedee

XLDnaute Barbatruc
Bonsour®
il est delicat de mettre le fichier original ( car complexe & lourd ( enfin je devrais dire code " bordelique":p ))
et vu qu'il s'agit d’import de page source web ( et que j'utilise une procédure " special " trouve sur le net )
et que je passe par le presse papier et que je fini par "past "pour coller ca dans ma page excel
:rolleyes:...
garbage In, garbage Out
M**** in , M**** out !!!
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pour pouvoir utiliser une sorte de pseudo variable nommée PressePapier vous pouvez utiliser ces procédures :
VB:
Property Get PressePapier() As String
On Error Resume Next
With New MSForms.DataObject: .GetFromClipboard: PressePapier = .GetText: End With
If Err Then MsgBox "Pas de données récupérées", vbCritical, "PressePapier"
End Property
Property Let PressePapier(ByVal Z As String)
With New MSForms.DataObject: .SetText Z: .PutInClipboard: End With
End Property
L'affecter à une variable reviendrait à la récupérer d'une zone sur laquelle on aurait fait Ctrl+V mais sans avoir besoin de cette zone, tandis que lui affecter une expression revient à faire Ctrl+C alors qu'elle serait sélectionnée dans cette zone fictive.

Faites des essais. Le contenu du presse papier n'est pas transformé avant qu'on l'envoie dans des cellules.
 

foufie

XLDnaute Nouveau
je suis loin d’être un pro en vba
bonjour

j'ai ete voir un peu les tutos Proprety get et let , j'aime bien le principe (beaucoup même ) et vos explications sont clair
mais
je laisse de cote tt cela pour le moment ( deja par ce que je ne sais pas trop comment m'en servir / adtaper a mon code , je vais donc essayer de progresser encore un peu et je reviendrai vers vous apres ....)

et Mercia a vous
 

foufie

XLDnaute Nouveau
bonjour a tous
bon j'ai pas encore assimilé les proprety get et let .......


mais bon ce que vous m'avez dit a fait son chemin ( il faut parfois du tps mdr )

donc vu que j'importe des données une fois importés je peux les modifier avant de m'en servir dans excel


il est donc préférable de travailler en amont ( avant de coller )
et je crois que je vous ais fais chercher dans la mauvaise direction
j'en suis désolé


donc j'ai travailler en amons , et je remplace le /1 par ''' et lorsque je colle dans excel
pas de souci ce sont des chiffres

txt= reponsetext
txt = Replace(txt, "/1", "")



ca fonctionne bien mais je ne sais pas trop comment aborder
les cotes 40 /10 par exemple car la ca reste du texte

txt = replace(txt,"/10", " *0.1 ") ' diviser par 10 c'est aussi multiplier par 0.1

(j' vois bien des solutions mais cela me parait pas tres simple/limpide )

par EXemple >

si /10 alors remplace /10 par FF
ensuite
si cellule contient FF alors cnum de la cellule ( X caractère a gauche ) puis /10 = resultats final


si vous avez pas trop compris mon exmple , c'est normal ( CA me semble pas clair non plus lol )
:)

txt= reponsetext
txt = replace(txt,"/10", " diviser par 10 c'est aussi ( *0.1 )")
txt = Replace(txt, "/1", "")



voici le genre de code que j'utilise pour importer mes données >>
pour ne pas avoir de souci avec la charte du forum et pour que le forum n'es aucun souci ,
l'url est celle de google


Code:
Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")
XMLHTTP.Open "GET", "http://www.google.com/search?q=hello", False
XMLHTTP.setRequestHeader "Content-Type", "text/xml"
XMLHTTP.send

MsgBox XMLHTTP.ResponseText
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Je ne comprend plus, je croyais que vous colliez vos données, et j'imaginais qu'au lieu de le faire par Ctrl+V pour pourriez le faire par une Sub dans un module sous Excel.
Pour une seule donnée ça pourrait être TSpl = Split(PressePapier, "/"): ActiveCel.Value = TSpl(0) / TSpl(1)
 

Modeste geedee

XLDnaute Barbatruc
Bonsour
il est donc préférable de travailler en amont ( avant de coller )
et je crois que je vous ais fais chercher dans la mauvaise direction
j'en suis désolé

ca fonctionne bien mais je ne sais pas trop comment aborder
les cotes 40 /10 par exemple car la ca reste du texte

voici le genre de code que j'utilise pour importer mes données >>
Code:
Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")
XMLHTTP.Open "GET", "http://www.google.com/search?q=hello", False
XMLHTTP.setRequestHeader "Content-Type", "text/xml"
XMLHTTP.send

MsgBox XMLHTTP.ResponseText
La méthode c'est bien...
mais les données posant réellement problème ce serait mieux ... #16
 

Statistiques des forums

Discussions
312 080
Messages
2 085 145
Membres
102 794
dernier inscrit
espinata