Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recuperation de date qui ne fonctionne pas bien

2 réponses
Avatar
magic-dd
bonjour

suite a la mise en place d'une macro pour recuperer des donnees dans
un classeur ferm=E9, tout fonctionne pour le texte mais pour les dates
recuperees ca bug, cela ne m'ecrit pas la date telle qu'elle est dans
mon classeur ferm=E9

voici le fichier joint

http://www.cijoint.fr/cjlink.php?file=3Dcj200910/cijZHXwAjK.zip
et le code
voici le code que j'ai pour recuperer mes donnees

Sub LoopThruFiles()
Application.EnableEvents =3D False

Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer

FName =3D Dir(ThisWorkbook.Path & "\LISTE\*.xls")
Do While Len(FName) > 0
FileCounter =3D FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) =3D FName
FName =3D Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating =3D False
For LoopCounter =3D 1 To FileCounter

x =3D LoopCounter
'calcul de la plage de destination
place =3D Range(Cells((((x - 1) * 99) + 2), 1), Cells(((x *
99)), 7)).Address

'METTRE LA LETTRE DU DISQUE DUR CONCERNE C,D, E,ETC...

GetValues "E:", FilesArray(LoopCounter), "Blad1",
"a1:G100", place
Next
Application.ScreenUpdating =3D True
End If

Columns("A:G").Select
Selection.Sort Key1:=3DRange("B2"), Order1:=3DxlAscending,
Header:=3DxlYes, _
OrderCustom:=3D1, MatchCase:=3DFalse,
Orientation:=3DxlTopToBottom, _
DataOption1:=3DxlSortNormal
Range("A1").Select
Application.EnableEvents =3D True
End Sub

Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)

'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle
With ActiveSheet.Range(place)
.FormulaArray =3D "=3D'" & ThisWorkbook.Path & "\LISTE" & "\[" &
FName & "]" & sName & "'!" & cellRange

.Value =3D .Value
Range(place).Select
Selection.Replace What:=3D"0", Replacement:=3D"", LookAt:=3DxlPart,
_
SearchOrder:=3DxlByRows, MatchCase:=3DFalse,
SearchFormat:=3DFalse, _
ReplaceFormat:=3DFalse
Range("A1").Select

End With


End Sub

2 réponses

Avatar
isabelle
bonjour Magic,

tu pourrait vérifier si la variable est une date avec par exemple
If IsDate(variable) Then "mettre au format date"
et mettre la cellule de destination au format voulu.

isabelle

magic-dd a écrit :
bonjour

suite a la mise en place d'une macro pour recuperer des donnees dans
un classeur fermé, tout fonctionne pour le texte mais pour les dates
recuperees ca bug, cela ne m'ecrit pas la date telle qu'elle est dans
mon classeur fermé

voici le fichier joint

http://www.cijoint.fr/cjlink.php?file=cj200910/cijZHXwAjK.zip
et le code
voici le code que j'ai pour recuperer mes donnees

Sub LoopThruFiles()
Application.EnableEvents = False

Dim place As String
Dim FilesArray() As String, FileCounter As Integer
Dim FName As String, LoopCounter As Integer

FName = Dir(ThisWorkbook.Path & "LISTE*.xls")
Do While Len(FName) > 0
FileCounter = FileCounter + 1
ReDim Preserve FilesArray(1 To FileCounter)
FilesArray(FileCounter) = FName
FName = Dir()
Loop
If FileCounter > 0 Then
Application.ScreenUpdating = False
For LoopCounter = 1 To FileCounter

x = LoopCounter
'calcul de la plage de destination
place = Range(Cells((((x - 1) * 99) + 2), 1), Cells(((x *
99)), 7)).Address

'METTRE LA LETTRE DU DISQUE DUR CONCERNE C,D, E,ETC...

GetValues "E:", FilesArray(LoopCounter), "Blad1",
"a1:G100", place
Next
Application.ScreenUpdating = True
End If

Columns("A:G").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending,
Header:=xlYes, _
OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1").Select
Application.EnableEvents = True
End Sub

Sub GetValues(fPath As String, FName As String, sName, _
cellRange As String, place As String)

'recopie une plage des valeurs externes dans une plage de
'la feuille active sous forme d'une formule matricielle
With ActiveSheet.Range(place)
.FormulaArray = "='" & ThisWorkbook.Path & "LISTE" & "[" &
FName & "]" & sName & "'!" & cellRange

.Value = .Value
Range(place).Select
Selection.Replace What:="0", Replacement:="", LookAt:=xlPart,
_
SearchOrder:=xlByRows, MatchCase:úlse,
SearchFormat:úlse, _
ReplaceFormat:úlse
Range("A1").Select

End With


End Sub





Avatar
magic-dd
je commence à voir ou ca merdouille

en fait etant donne que dans cette ligne de commande

place = Range(Cells((((X - 1) * 99) + 2), 1), Cells(((X * 99)),
7)).Address

Cela me donne une adresse fige de place= A2:G99


donc pour ne pas prendre les cellules ne contenant rien il me faudrait
avoir la variable "fin" qui correspondrait à un countA(A:A) du
classeur pour lequel il copie les donnees

le probleme des dates venait que je demandait de remplacer les 0 dans
mes colonnes A:G ce qui me virait des O dans les dates de naissances



donc le plus dur est de trouver comment faire dire a cette sub de
prendre la variable fin

merci de votre aide