Bonjour à tous,
J'ai testé sous excel 2007, que je découvre, un classeur créé sous excel
2002, et je suis confronté à un traitement différent des dates selon la
version d'excel (sauf erreur de ma part).
Soit un range composé pour l'exemple de 4 lignes et 5 colonnes, comme
suit :
texte, montant, montant, date, texte.
Je transmets ce range dans un array, puis (omettons pour l'exemple
quelques instructions) je colle les valeurs de l'array sur une 2e feuille.
La macro éxécutée sous 2002 colle les dates au format français, éxécutée
sous 2007 les dates sont collées au format anglo-saxon.
Je pourrai probablement modifier la macro pour traiter chaque élément
"Date" de l'array avant transfert, mais je trouvais bien pratique de
coller l'ensemble de l'array d'une seule instruction (code ci-dessous).
Savez-vous si une option d'excel 2007 pourrait résoudre ce problème ?
le code et le lien pour le classeur exemple :
Sub test_dates_tableau()
ReDim letableau(3, 4)
i = 0
For Each c In Sheets("feuil1").Range("a1:a4")
letableau(i, 0) = c
letableau(i, 1) = c.Offset(0, 1)
letableau(i, 2) = c.Offset(0, 2)
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
letableau(i, 4) = c.Offset(0, 4) 'tiers
i = i + 1
Next c
Sheets("feuil2").Range("a1:e4") = letableau
End Sub
http://cjoint.com/?kkqBnPOc2w
Merci d'avance, et bonne soirée à tous,
Zappy.
Bonjour à tous,
J'ai testé sous excel 2007, que je découvre, un classeur créé sous excel
2002, et je suis confronté à un traitement différent des dates selon la
version d'excel (sauf erreur de ma part).
Soit un range composé pour l'exemple de 4 lignes et 5 colonnes, comme
suit :
texte, montant, montant, date, texte.
Je transmets ce range dans un array, puis (omettons pour l'exemple
quelques instructions) je colle les valeurs de l'array sur une 2e feuille.
La macro éxécutée sous 2002 colle les dates au format français, éxécutée
sous 2007 les dates sont collées au format anglo-saxon.
Je pourrai probablement modifier la macro pour traiter chaque élément
"Date" de l'array avant transfert, mais je trouvais bien pratique de
coller l'ensemble de l'array d'une seule instruction (code ci-dessous).
Savez-vous si une option d'excel 2007 pourrait résoudre ce problème ?
le code et le lien pour le classeur exemple :
Sub test_dates_tableau()
ReDim letableau(3, 4)
i = 0
For Each c In Sheets("feuil1").Range("a1:a4")
letableau(i, 0) = c
letableau(i, 1) = c.Offset(0, 1)
letableau(i, 2) = c.Offset(0, 2)
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
letableau(i, 4) = c.Offset(0, 4) 'tiers
i = i + 1
Next c
Sheets("feuil2").Range("a1:e4") = letableau
End Sub
http://cjoint.com/?kkqBnPOc2w
Merci d'avance, et bonne soirée à tous,
Zappy.
Bonjour à tous,
J'ai testé sous excel 2007, que je découvre, un classeur créé sous excel
2002, et je suis confronté à un traitement différent des dates selon la
version d'excel (sauf erreur de ma part).
Soit un range composé pour l'exemple de 4 lignes et 5 colonnes, comme
suit :
texte, montant, montant, date, texte.
Je transmets ce range dans un array, puis (omettons pour l'exemple
quelques instructions) je colle les valeurs de l'array sur une 2e feuille.
La macro éxécutée sous 2002 colle les dates au format français, éxécutée
sous 2007 les dates sont collées au format anglo-saxon.
Je pourrai probablement modifier la macro pour traiter chaque élément
"Date" de l'array avant transfert, mais je trouvais bien pratique de
coller l'ensemble de l'array d'une seule instruction (code ci-dessous).
Savez-vous si une option d'excel 2007 pourrait résoudre ce problème ?
le code et le lien pour le classeur exemple :
Sub test_dates_tableau()
ReDim letableau(3, 4)
i = 0
For Each c In Sheets("feuil1").Range("a1:a4")
letableau(i, 0) = c
letableau(i, 1) = c.Offset(0, 1)
letableau(i, 2) = c.Offset(0, 2)
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
letableau(i, 4) = c.Offset(0, 4) 'tiers
i = i + 1
Next c
Sheets("feuil2").Range("a1:e4") = letableau
End Sub
http://cjoint.com/?kkqBnPOc2w
Merci d'avance, et bonne soirée à tous,
Zappy.
Bonsoir,
Essaye en remplaçant
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
par
letableau(i, 3) = CDate(c.Offset(0, 3))
FS
Bonsoir,
Essaye en remplaçant
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
par
letableau(i, 3) = CDate(c.Offset(0, 3))
FS
Bonsoir,
Essaye en remplaçant
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
par
letableau(i, 3) = CDate(c.Offset(0, 3))
FS
Et pour ton info.
Lorsque tu utilises la fonction "Format", le contenu de ta variable
contient une chaîne de caractères contenant une date comme : "5/10/09"
Ainsi transmis, Excel n'a aucune idée si la date signifie :
le 5 octobre 2009 ou 10 mai 2009 ou 9 mai 2005
Comme tu es en VBA, Excel utilises donc le format par défaut (américain)
pour interpréter les dates que tu lui soumets.
Si tu utilises la fonction de conversion Cdate(), pour que cela fonctionne,
le contenu de ta variable contient une date 5/10/19 sans les guillemets
et excel l'interprète correctement et ne modifie pas le format de celle-ci
lorsqu'il te la retourne dans ta feuille de calcul.
"michdenis" a écrit dans le message de groupe de discussion :
Bonjour Zappy,
Pour faire ce que tu désires,
A - Mettre une plage de données dans un variable (Tableau)
B - Copier ce tableau vers une autre plage de cellules,
Ce code fonctionne et est suffisant :
x = Feuil1.Range("A1:F4").Value
Feuil2.Range("A1:F4") = x
Je suppose que la plage de destination, la plage de cellules est au format standard.
"zappy" a écrit dans le message de groupe de discussion :
#
Bonjour à tous,
J'ai testé sous excel 2007, que je découvre, un classeur créé sous excel
2002, et je suis confronté à un traitement différent des dates selon la
version d'excel (sauf erreur de ma part).
Soit un range composé pour l'exemple de 4 lignes et 5 colonnes, comme suit :
texte, montant, montant, date, texte.
Je transmets ce range dans un array, puis (omettons pour l'exemple
quelques instructions) je colle les valeurs de l'array sur une 2e feuille.
La macro éxécutée sous 2002 colle les dates au format français, éxécutée
sous 2007 les dates sont collées au format anglo-saxon.
Je pourrai probablement modifier la macro pour traiter chaque élément
"Date" de l'array avant transfert, mais je trouvais bien pratique de
coller l'ensemble de l'array d'une seule instruction (code ci-dessous).
Savez-vous si une option d'excel 2007 pourrait résoudre ce problème ?
le code et le lien pour le classeur exemple :
Sub test_dates_tableau()
ReDim letableau(3, 4)
i = 0
For Each c In Sheets("feuil1").Range("a1:a4")
letableau(i, 0) = c
letableau(i, 1) = c.Offset(0, 1)
letableau(i, 2) = c.Offset(0, 2)
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
letableau(i, 4) = c.Offset(0, 4) 'tiers
i = i + 1
Next c
Sheets("feuil2").Range("a1:e4") = letableau
End Sub
http://cjoint.com/?kkqBnPOc2w
Merci d'avance, et bonne soirée à tous,
Zappy.
Et pour ton info.
Lorsque tu utilises la fonction "Format", le contenu de ta variable
contient une chaîne de caractères contenant une date comme : "5/10/09"
Ainsi transmis, Excel n'a aucune idée si la date signifie :
le 5 octobre 2009 ou 10 mai 2009 ou 9 mai 2005
Comme tu es en VBA, Excel utilises donc le format par défaut (américain)
pour interpréter les dates que tu lui soumets.
Si tu utilises la fonction de conversion Cdate(), pour que cela fonctionne,
le contenu de ta variable contient une date 5/10/19 sans les guillemets
et excel l'interprète correctement et ne modifie pas le format de celle-ci
lorsqu'il te la retourne dans ta feuille de calcul.
"michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
43BF30B8-2DF6-47B2-93A7-9390AD5B95B5@microsoft.com...
Bonjour Zappy,
Pour faire ce que tu désires,
A - Mettre une plage de données dans un variable (Tableau)
B - Copier ce tableau vers une autre plage de cellules,
Ce code fonctionne et est suffisant :
x = Feuil1.Range("A1:F4").Value
Feuil2.Range("A1:F4") = x
Je suppose que la plage de destination, la plage de cellules est au format standard.
"zappy" <utilisateur@exemple.fr> a écrit dans le message de groupe de discussion :
#6UU75cSKHA.1232@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
J'ai testé sous excel 2007, que je découvre, un classeur créé sous excel
2002, et je suis confronté à un traitement différent des dates selon la
version d'excel (sauf erreur de ma part).
Soit un range composé pour l'exemple de 4 lignes et 5 colonnes, comme suit :
texte, montant, montant, date, texte.
Je transmets ce range dans un array, puis (omettons pour l'exemple
quelques instructions) je colle les valeurs de l'array sur une 2e feuille.
La macro éxécutée sous 2002 colle les dates au format français, éxécutée
sous 2007 les dates sont collées au format anglo-saxon.
Je pourrai probablement modifier la macro pour traiter chaque élément
"Date" de l'array avant transfert, mais je trouvais bien pratique de
coller l'ensemble de l'array d'une seule instruction (code ci-dessous).
Savez-vous si une option d'excel 2007 pourrait résoudre ce problème ?
le code et le lien pour le classeur exemple :
Sub test_dates_tableau()
ReDim letableau(3, 4)
i = 0
For Each c In Sheets("feuil1").Range("a1:a4")
letableau(i, 0) = c
letableau(i, 1) = c.Offset(0, 1)
letableau(i, 2) = c.Offset(0, 2)
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
letableau(i, 4) = c.Offset(0, 4) 'tiers
i = i + 1
Next c
Sheets("feuil2").Range("a1:e4") = letableau
End Sub
http://cjoint.com/?kkqBnPOc2w
Merci d'avance, et bonne soirée à tous,
Zappy.
Et pour ton info.
Lorsque tu utilises la fonction "Format", le contenu de ta variable
contient une chaîne de caractères contenant une date comme : "5/10/09"
Ainsi transmis, Excel n'a aucune idée si la date signifie :
le 5 octobre 2009 ou 10 mai 2009 ou 9 mai 2005
Comme tu es en VBA, Excel utilises donc le format par défaut (américain)
pour interpréter les dates que tu lui soumets.
Si tu utilises la fonction de conversion Cdate(), pour que cela fonctionne,
le contenu de ta variable contient une date 5/10/19 sans les guillemets
et excel l'interprète correctement et ne modifie pas le format de celle-ci
lorsqu'il te la retourne dans ta feuille de calcul.
"michdenis" a écrit dans le message de groupe de discussion :
Bonjour Zappy,
Pour faire ce que tu désires,
A - Mettre une plage de données dans un variable (Tableau)
B - Copier ce tableau vers une autre plage de cellules,
Ce code fonctionne et est suffisant :
x = Feuil1.Range("A1:F4").Value
Feuil2.Range("A1:F4") = x
Je suppose que la plage de destination, la plage de cellules est au format standard.
"zappy" a écrit dans le message de groupe de discussion :
#
Bonjour à tous,
J'ai testé sous excel 2007, que je découvre, un classeur créé sous excel
2002, et je suis confronté à un traitement différent des dates selon la
version d'excel (sauf erreur de ma part).
Soit un range composé pour l'exemple de 4 lignes et 5 colonnes, comme suit :
texte, montant, montant, date, texte.
Je transmets ce range dans un array, puis (omettons pour l'exemple
quelques instructions) je colle les valeurs de l'array sur une 2e feuille.
La macro éxécutée sous 2002 colle les dates au format français, éxécutée
sous 2007 les dates sont collées au format anglo-saxon.
Je pourrai probablement modifier la macro pour traiter chaque élément
"Date" de l'array avant transfert, mais je trouvais bien pratique de
coller l'ensemble de l'array d'une seule instruction (code ci-dessous).
Savez-vous si une option d'excel 2007 pourrait résoudre ce problème ?
le code et le lien pour le classeur exemple :
Sub test_dates_tableau()
ReDim letableau(3, 4)
i = 0
For Each c In Sheets("feuil1").Range("a1:a4")
letableau(i, 0) = c
letableau(i, 1) = c.Offset(0, 1)
letableau(i, 2) = c.Offset(0, 2)
letableau(i, 3) = Format(c.Offset(0, 3), "dd/mm/yyyy")'date
letableau(i, 4) = c.Offset(0, 4) 'tiers
i = i + 1
Next c
Sheets("feuil2").Range("a1:e4") = letableau
End Sub
http://cjoint.com/?kkqBnPOc2w
Merci d'avance, et bonne soirée à tous,
Zappy.