OVH Cloud OVH Cloud

problème avec les dates sous vba

8 réponses
Avatar
herve
Bonjour, je retrouve pas l'auteur de ce qui suit...
en tout cas c'est super!!
j'ai un seul prob que j'arrive pas à résoudre par un remise en format
si dans le tableau se trouve un date, ex: 31/01/2000 tout se passe
normalement dans la retranscription,
dans le cas du: 10/01/2000 il me rapporte comme date 1/10/2000.

Sub ReportLigneActiveEt1()
Dim Mat1() As String, MatN() As String, i As Integer
Dim NbColLigne1 As Integer, NbColLigneN As Integer
' Nombre de colonnes utilisées en ligne 1
NbColLigne1 = Range("IV1").End(xlToLeft).Column
' Nombre de colonnes utilisées pour la ligne active
With ActiveCell
NbColLigneN = .Offset(0, 250 - .Column).End(xlToLeft).Column
End With
ReDim Mat1(NbColLigne1 - 1)
' Stockage des données de la ligne 1
For i = 0 To NbColLigne1 - 1
Mat1(i) = Range("A1").Offset(0, i)
Next i
ReDim MatN(NbColLigneN - 1)
' Stockage des données de la ligne active
For i = 0 To NbColLigneN - 1
With ActiveCell.Offset(0, -ActiveCell.Column + 1)
MatN(i) = .Offset(0, i)
End With
Next i
' Création d'un nouveau classeur
Workbooks.Add
' Report des données
With Range("A1")
For i = 0 To NbColLigne1 - 1
.Offset(i) = Mat1(i)
Next i
End With
With Range("B1")
For i = 0 To NbColLigneN - 1
.Offset(i) = MatN(i)
Next i
End With


End Sub

8 réponses

Avatar
AV
Et si tu nous rappelais la question originelle ....

AV
Avatar
Denis Michon
Bonjour Hervé

Si tu as une version excel 2000 ou plus récente,

est-ce que ceci fonctionne ?

Remplace ta section de code par celle-ci.
tu peux définir un format date différent si besoin est.

La méthode resize ne fonctionne pas si ta version est inférieur à excel 2000
cependant des aménagements sont toujours possible !


Workbooks.Add
With ActiveWorkbook
With .Range("A1").Resize(UBound(Mat1) + 1)
.NumberFormat = "d/mm/yy"
.Value = Application.transpose(Mat1)
End With
With .Range("b1").Resize(UBound(MatN) + 1)
.NumberFormat = "d/mm/yy"
.Value = Application.transpose(MatN)
End With
End With


Salutations!



"herve" a écrit dans le message de news:br4t4s$dpa$
Bonjour, je retrouve pas l'auteur de ce qui suit...
en tout cas c'est super!!
j'ai un seul prob que j'arrive pas à résoudre par un remise en format
si dans le tableau se trouve un date, ex: 31/01/2000 tout se passe
normalement dans la retranscription,
dans le cas du: 10/01/2000 il me rapporte comme date 1/10/2000.

Sub ReportLigneActiveEt1()
Dim Mat1() As String, MatN() As String, i As Integer
Dim NbColLigne1 As Integer, NbColLigneN As Integer
' Nombre de colonnes utilisées en ligne 1
NbColLigne1 = Range("IV1").End(xlToLeft).Column
' Nombre de colonnes utilisées pour la ligne active
With ActiveCell
NbColLigneN = .Offset(0, 250 - .Column).End(xlToLeft).Column
End With
ReDim Mat1(NbColLigne1 - 1)
' Stockage des données de la ligne 1
For i = 0 To NbColLigne1 - 1
Mat1(i) = Range("A1").Offset(0, i)
Next i
ReDim MatN(NbColLigneN - 1)
' Stockage des données de la ligne active
For i = 0 To NbColLigneN - 1
With ActiveCell.Offset(0, -ActiveCell.Column + 1)
MatN(i) = .Offset(0, i)
End With
Next i
' Création d'un nouveau classeur
Workbooks.Add
' Report des données
With Range("A1")
For i = 0 To NbColLigne1 - 1
.Offset(i) = Mat1(i)
Next i
End With
With Range("B1")
For i = 0 To NbColLigneN - 1
.Offset(i) = MatN(i)
Next i
End With


End Sub
Avatar
AV
La méthode resize ne fonctionne pas si ta version est inférieur à excel 2000


Gluppss !
Mais comment se fait-ce ?
Aurais-je un micro-climat chez moi ?
(Testé sur XL SR2)

AV

Avatar
Denis Michon
Bonjour AV,

Je pensais avoir lu ici sur ce forum que cette méthode ne fonctionnait pas sur excel 97. Comme je n'ai pas cette version
d'installée, je n'ai jamais personnellement testé ! Tant mieux pour les usagers d'excel si tu confirmes le contraire ! Cette
méthode est très pratique...

;-)

Salutations!


"AV" a écrit dans le message de news:
La méthode resize ne fonctionne pas si ta version est inférieur à excel 2000


Gluppss !
Mais comment se fait-ce ?
Aurais-je un micro-climat chez moi ?
(Testé sur XL SR2)

AV

Avatar
herve
désolé
cette macro copie la ligne de la cellule active, ainsi que la ligne A1,
avant de les coller dans un nouveau classeur verticalement, pas de prob pour
les noms, adresses etc, seul les dates me posent prob.
a+
herve

"AV" a écrit dans le message de
news:
Et si tu nous rappelais la question originelle ....

AV




Avatar
AV
M'est avis qu'il n'est pas utile de stocker les valeurs dans 2 tableaux

Alternative et pas de problème de dates :
Ta base de données (A1:YYxx) est dans la feuille active et comprend en ligne 1
les noms de champs (étiquettes de colonnes)

Sub zzzz()
With [A1].CurrentRegion
x = .Rows.Count
y = .Columns.Count
If Intersect(ActiveCell, Range(.Address)) Is Nothing Then Exit Sub
End With
Union(Range(Cells(1, 1), Cells(1, y)), Range(Cells(ActiveCell.Row, 1), _
Cells(ActiveCell.Row, y))).Copy
Workbooks.Add
[A1].PasteSpecial Paste:=xlAll, Transpose:=True
Application.CutCopyMode = False: [A1].Select
End Sub

AV
Avatar
herve
merci alain
c'est exactement ce que je souhaitais, et en plus c'est beaucoup plus rapide
de cette manière, merci
a+
hervé

"AV" a écrit dans le message de
news:
M'est avis qu'il n'est pas utile de stocker les valeurs dans 2 tableaux

Alternative et pas de problème de dates :
Ta base de données (A1:YYxx) est dans la feuille active et comprend en
ligne 1

les noms de champs (étiquettes de colonnes)

Sub zzzz()
With [A1].CurrentRegion
x = .Rows.Count
y = .Columns.Count
If Intersect(ActiveCell, Range(.Address)) Is Nothing Then Exit Sub
End With
Union(Range(Cells(1, 1), Cells(1, y)), Range(Cells(ActiveCell.Row, 1), _
Cells(ActiveCell.Row, y))).Copy
Workbooks.Add
[A1].PasteSpecial Paste:=xlAll, Transpose:=True
Application.CutCopyMode = False: [A1].Select
End Sub

AV




Avatar
AV
c'est exactement ce que je souhaitais, et en plus c'est beaucoup plus rapide
de cette manière


Alors c'est parfait !
AV