Bonjour,
Suite à l'utilisation d'une macro de base de données, je rencontre un problème... En effet, lors de la création de la BDD tout se déroule très très bien mais dans une série de colonnes concernant des dates (jj/mm/aaaa), les dates apparaissent comme suit : mm/jj/aaaa dans la BDD !!
Après quelques recherches, mon problème vient donc de l'interprétation de VBA :
"La meilleure méthode est l'utilisation de la fonction DateValue() qui fait fi du format date du panneau de configuration. Comme chaque composante (année, mois, jour) de la fonction est spécifiée dans les paramètres de la fonction, cela ne laisse aucune place à Excel (vba) à l'interprétation."
Mais comment intégrer ce paramètre dans ma macro sachant que j'appelle des lignes composées de "montants", "Textes", ... et de "DATES" !!
Merci de votre aide car là je suis perdu...
Berlan
Ci-dessous ma macro :
Sub MAJ_RAO()
Dim feColl, sDat(), f%, oDat, i&, j&, n&
Dim pCol%, pLig$
'================================================= ================
'PARAMETRES :
pCol = 44 'Nombre de colonnes à traiter
pLig = 367 'Première ligne utilisable dans la feuille "Synthese"
feColl = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k") 'Liste des feuilles de données
'================================================= ================
ReDim sDat(1 To pCol, 1 To 1)
For f = 0 To UBound(feColl)
With Sheets(feColl(f))
oDat = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, pCol)).Value
End With
For i = 1 To UBound(oDat, 1)
If Left$(oDat(i, 1), 1) = "D" Then
n = n + 1
ReDim Preserve sDat(1 To pCol, 1 To n)
For j = 1 To pCol
sDat(j, n) = oDat(i, j)
Next j
End If
Next i
Next f
sDat = WorksheetFunction.Transpose(sDat)
With Sheets("Synthese")
.Cells(pLig, 1) = " "
.Range(.Cells(pLig, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, pCol)).ClearContents
.Cells(pLig, 1).Resize(UBound(sDat, 1), pCol) = sDat
End With
End Sub
Suite à l'utilisation d'une macro de base de données, je rencontre un problème... En effet, lors de la création de la BDD tout se déroule très très bien mais dans une série de colonnes concernant des dates (jj/mm/aaaa), les dates apparaissent comme suit : mm/jj/aaaa dans la BDD !!
Après quelques recherches, mon problème vient donc de l'interprétation de VBA :
"La meilleure méthode est l'utilisation de la fonction DateValue() qui fait fi du format date du panneau de configuration. Comme chaque composante (année, mois, jour) de la fonction est spécifiée dans les paramètres de la fonction, cela ne laisse aucune place à Excel (vba) à l'interprétation."
Mais comment intégrer ce paramètre dans ma macro sachant que j'appelle des lignes composées de "montants", "Textes", ... et de "DATES" !!
Merci de votre aide car là je suis perdu...
Berlan
Ci-dessous ma macro :
Sub MAJ_RAO()
Dim feColl, sDat(), f%, oDat, i&, j&, n&
Dim pCol%, pLig$
'================================================= ================
'PARAMETRES :
pCol = 44 'Nombre de colonnes à traiter
pLig = 367 'Première ligne utilisable dans la feuille "Synthese"
feColl = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k") 'Liste des feuilles de données
'================================================= ================
ReDim sDat(1 To pCol, 1 To 1)
For f = 0 To UBound(feColl)
With Sheets(feColl(f))
oDat = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, pCol)).Value
End With
For i = 1 To UBound(oDat, 1)
If Left$(oDat(i, 1), 1) = "D" Then
n = n + 1
ReDim Preserve sDat(1 To pCol, 1 To n)
For j = 1 To pCol
sDat(j, n) = oDat(i, j)
Next j
End If
Next i
Next f
sDat = WorksheetFunction.Transpose(sDat)
With Sheets("Synthese")
.Cells(pLig, 1) = " "
.Range(.Cells(pLig, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, pCol)).ClearContents
.Cells(pLig, 1).Resize(UBound(sDat, 1), pCol) = sDat
End With
End Sub