Des dates converties à l'américaine !!!

  • Initiateur de la discussion Initiateur de la discussion Jam
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jam

XLDnaute Accro
Bonjour à tous,

Je continue avec mes ennuies de dates.
J'ai une macro qui me permet de remplir des cellules vides par la valeur contenue dans la cellule du dessus. Ceci est fort pratique et fonctionnait très bien jusqu'à ce problème avec des dates.
Dans une colonne j'ai des dates et d'autres types d'infos (textes, valeurs...) qui se suivent. J'ai "extrait" dans une autre colonne les dates. Ce qui me permet d'obtenir une superposition de dates et de cellules vides. La macro intervenant à ce moment pour remplir les cellules vides avec les dates récupérée.
Mon problème est que les mois et les jours se retrouvent inversés sans raison apparente. Pour le mois de décembre j'ai des dates qui s'échelonne du 1er au 31.
Or pour une raison "bizarre" les dates situées entre le 1er et le 12 se retrouvent sous la forme 12/01/2006, 12/02/2006...12/11/2006 pour ensuite reprendre le bon ordre !!!
Je précise à tout hasard que le format des 2 cellules (origine et "extraction") est bien jj/mm/aa.
La macro que j'utilise est la suivante:
Code:
Sub FillBlanks()
Dim rRange1 As Range, rRange2 As Range
Dim lReply As Integer
    If Selection.Cells.Count = 1 Then
        MsgBox "Vous devez sélectionner la liste des cellules à remplir", vbInformation, TITLE
        Exit Sub
    ElseIf Selection.Columns.Count > 1 Then
        MsgBox "Vous ne pouvez sélectionner qu'une colonne", vbInformation, TITLE
        Exit Sub
    End If
    Set rRange1 = Selection
    On Error Resume Next
        Set rRange2 = rRange1.SpecialCells(xlCellTypeBlanks)
        On Error GoTo 0
        If rRange2 Is Nothing Then
            MsgBox "Aucune cellule vide trouvée", vbInformation, TITLE
            Exit Sub
        End If
    rRange2.FormulaR1C1 = "=R[-1]C"
    lReply = MsgBox("Convertir en valeur ?", vbYesNo + vbQuestion, TITLE)
    If lReply = vbYes Then rRange1 = rRange1.Value
End Sub

Si quelqu'un a une idée sur le pourquoi du comment, je suis preneur.
Merci d'avance
 
Re : Des dates converties à l'américaine !!!

Bonjour

pas de problème chez mois mais essaies peut-être ainsi
Code:
Sub FillBlanks()
Dim rRange1 As Range, rRange2 As Range, c As Range
Dim lReply As Integer
    If Selection.Cells.Count = 1 Then
        MsgBox "Vous devez sélectionner la liste des cellules à remplir", vbInformation, Title
        Exit Sub
    ElseIf Selection.Columns.Count > 1 Then
        MsgBox "Vous ne pouvez sélectionner qu'une colonne", vbInformation, Title
        Exit Sub
    End If
    Set rRange1 = Selection
    On Error Resume Next
        Set rRange2 = rRange1.SpecialCells(xlCellTypeBlanks)
        On Error GoTo 0
        If rRange2 Is Nothing Then
            MsgBox "Aucune cellule vide trouvée", vbInformation, Title
            Exit Sub
        End If
    rRange2.FormulaR1C1 = "=R[-1]C"
    lReply = MsgBox("Convertir en valeur ?", vbYesNo + vbQuestion, Title)
    If lReply = vbYes Then
        For Each c In rRange1
            c = CDate(c)
        Next
    End If
End Sub
 
Re : Des dates converties à l'américaine !!!

bonjour Jam,Pascal

une autre solution en reprenant celle de Pascal
mettre la sélection en format standard et après remettre en format dates
j'ai déjà eu ton cas même avec cdate

Sub FillBlanks()
Dim rRange1 As Range, rRange2 As Range, c As Range, Title As String
Dim lReply As Integer
If Selection.Cells.Count = 1 Then
MsgBox "Vous devez sélectionner la liste des cellules à remplir" ', vbInformation, Title
Exit Sub
ElseIf Selection.Columns.Count > 1 Then
MsgBox "Vous ne pouvez sélectionner qu'une colonne" ', vbInformation, Title
Exit Sub
End If
Selection.NumberFormat = "0" 'format standard
Set rRange1 = Selection
Selection.NumberFormat = "dd/mm/yyy"
On Error Resume Next
Set rRange2 = rRange1.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If rRange2 Is Nothing Then
MsgBox "Aucune cellule vide trouvée" ', vbInformation, Title
Exit Sub
End If
rRange2.FormulaR1C1 = "=R[-1]C"
lReply = MsgBox("Convertir en valeur ?", vbYesNo + vbQuestion, Title)
If lReply = vbYes Then
For Each c In rRange1
c = c
Next
End If
End Sub

à bientôt
 
Re : Des dates converties à l'américaine !!!

Salut Bebere, Pascal,

Comme je suis pressé je n'ai pas eu le temps de tester vos solutions. A première vue la solution de Bebere ma parait bien pensée. Je teste dès que j'ai un peu de temps.

Merci à vous deux.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
237
Réponses
3
Affichages
298
Réponses
2
Affichages
511
Réponses
2
Affichages
809
Retour