XL 2010 Empêcher conversion date FR en US

StagiairePasPayé

XLDnaute Nouveau
Bonjour à tous,
c'est encore moi.
J'ai un fichier excel contenant des affaires et dans chaque ligne il y a des dates, mon problème est que je veux les recopier dans un autre fichier sauf qu'elle pas du format FR au format US. Code pour la copie :
VB:
While colonne <> 18
        lot1SuiviSydev.Cells(i, colonne).NumberFormat = "mm / dd / yyyy"
        lot1Recap.Cells(i, colonne).NumberFormat = "dd / mm / yyyy"
       
        copieValue = lot1SuiviSydev.Cells(i, colonne).Value
       
       
        copieBackColor = lot1SuiviSydev.Cells(i, colonne).Interior.ColorIndex
        copieFontBold = lot1SuiviSydev.Cells(i, colonne).Characters.Font.Bold
        copieFontColor = lot1SuiviSydev.Cells(i, colonne).Characters.Font.Color
        copieBorder = lot1SuiviSydev.Cells(i, colonne).Borders.Value
        lot1Recap.Activate
       
        With lot1Recap.Cells(i, colonne)
            .Value = Format(copieValue, "dd/mm/yyyy")
            With .Characters.Font
                .Bold = copieFontBold
            End With
        End With
       
        colonne = colonne + 1
    Wend
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Envoyez la valeur de la cellule, pas du texte, comme ça il n'essayera plus de l'interpréter de travers pour le reconvertir en date.
 

StagiairePasPayé

XLDnaute Nouveau
Lorsque cette ligne :
VB:
copieValue = lot1SuiviSydev.Cells(i, colonne).Value
s'effectue, tu me dis que c'est du texte qui est envoyé ?
 

Dranreb

XLDnaute Barbatruc
Mettez une instructions MsgBox TypeName(copieValue) pour voir ce qui est affecté par Excel à cette variable,
et MsgBox TypeName(Format(copieValue, "dd/mm/yyyy")) pour voir ce que vous voulez lui faire avaler plus loin.
D'ailleurs vous ne changer pas copieValeur entre temps, alors à quoi ça sert ?
 

tatiak

XLDnaute Barbatruc
Bonjour à tous,
Essaye ceci :
VB:
        With lot1Recap.Cells(i, colonne)
            .Value = cdate(Format(copieValue, "dd/mm/yyyy"))
Pierre
 

StagiairePasPayé

XLDnaute Nouveau
bonjour et merci, effectivement le type de ma variable est string, même avec format(), lorsque je rajoute CDate() excel me renvoie une erreur d'incompatibilité de type. Je ne comprends vraiment pas pourquoi.
 

Roblochon

XLDnaute Impliqué
Bonjour,

En utilisant la propriété Value2 dont la valeur est indépendante du format.

VB:
copieValue = lot1SuiviSydev.Cells(i, colonne).Value2
Puis
Code:
 With lot1Recap.Cells(i, colonne)
            .Value2 = copieValue
Bon week-end
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Bonjour Roblochon.
Dans le cas présent .Value2 va renvoyé un entier long et c'est le format de cellule qui pourrait faire apparaître une date.
(Alt+F8 Feuil1.test dans l'exemple)
Cordialement
 

Fichiers joints

Roblochon

XLDnaute Impliqué
Bonsoir @Efgé

Euh ben oui, c'est le résultat attendu:), une valeur indépendante du format et qui peut être formatée à souhait (date FR ou US selon besoin)
D'ailleurs pour vba Value2 pour un nombre est toujours un Double, pas un entier.

Bonne soirée
 

Discussions similaires


Haut Bas