Boucle

Bonjour, je suis tout nouveau en codage vb et je viens vers vous pour quelques chose de tout bête , j'ai des mes données des dates sous la forme " 14 juillet 2018" sauf au lieu d'avoir 1 j'ai "1er" ce qui fait merder mon programme, j'aimerais donc savoir comment dire que dès qu'il croise la chaine "1er" il le transforme en 1.

Voici le bout du programme concerné.

For i = 2 To dl

valeur = Cells(i, 5).Value

tmpstr = Split(valeur, " ")

Range("F" & i) = CDate(tmpstr(0) & " " & tmpstr(1) & " " & tmpstr(2))

Range("F" & i).NumberFormat = "dd/mm/yyyy"

Next i

Bonjour,

Si j’ai bien compris et qu'on parle d'une chaîne de caractères de date, et pas une date Excel, tu peux essayer quelque chose du genre :

MaDate = Replace(MaDate, "1er", "1")

Merci pour ta raison, en effet, c'est une chaine de caractère que je viens splitter pour récuperer ce que je veux et le transformer en date, sauf que ça merde car dans les donées je me retrouve avec des "1er" au lieu de "1", j'ai essayé ton code mais ça ne semble pas fonctionner.

il faudrait que dès qu'il tombe sur "1er octobre 2018" il remplace 1er par 1 pour que je puisse splitter et recuperer la date

Slt gomora,

il faudrait que dès qu'il tombe sur "1er octobre 2018" il remplace 1er par 1 pour que je puisse splitter et recuperer la date

Fournis un fichier, par ce que c'est bien ce qu'est censé faire mon code...

Sub date_debut_fin()

Dim i As Integer, dl As Integer

Dim tmpstr() As String

Dim Dat1 As Date

Dim Dat2 As Date

Dim nbr_jr As Integer

Dim cellule As Range

Dim madate As String

Workbooks("fichier_client").Activate

Worksheets("Données brutes").Activate

dl = Range("E" & Rows.Count).End(xlUp).Row

For i = 2 To dl

valeur = Cells(i, 5).Value

tmpstr = Split(valeur, " ")

Range("F" & i) = CDate(tmpstr(0) & " " & tmpstr(1) & " " & tmpstr(2))

Range("F" & i).NumberFormat = "dd/mm/yyyy"

Next i

With Sheets("Analyse")

.Range("J2") = Application.Min(Range("F2:F" & dl))

.Range("J3") = Application.Max(Range("F2:F" & dl))

End With

With Sheets("Animation")

.Range("J2") = Application.Min(Range("F2:F" & dl))

.Range("J3") = Application.Max(Range("F2:F" & dl))

End With

Worksheets("Animation").Activate

For Each cellule In Range("J2:J3")

cellule.NumberFormat = "dd/mm/yyyy;@"

Next cellule

Worksheets("Analyse").Activate

For Each cellule In Range("J2:J3")

cellule.NumberFormat = "dd/mm/yyyy;@"

Next cellule

For Each cellule In Range("J2:J3")

cellule.NumberFormat = "dd/mm/yyyy;@"

Next cellule

'For Each cellule In Range("B2:B18")

'cellule.NumberFormat = "dd/mm/yy;@"

'Next cellule

Dat1 = Range("J2")

Dat2 = Range("J3")

nbr_jr = Dat2 - Dat1

Range("I20") = nbr_jr

Range("I20").Font.ColorIndex = 2

Range("I20").Font.Bold = True

Range("I20").Select

With Selection.Font

.Size = 14

End With

With Cells(20, 9)

.HorizontalAlignment = xlHAlignCenter

End With

With Cells(2, 10)

.HorizontalAlignment = xlHAlignRight

End With

With Cells(3, 10)

.HorizontalAlignment = xlHAlignRight

End With

End Sub

En gros je recupère la colonne E qui a la forme par exemple "14 juillet 2018 à 17:58" je recupere le texte "14 juillet 2018" puis je le transforme en date dans la colonne F juste à côté puis dans cette colonne je regarde quelle date est la plus loin est la plus proche

J'ai bien compris ce que tu voulais, c'est bien pour ça que je te demande un fichier, pas juste ton code VBA (que tu postes en plus sans prendre la peine d'utiliser la mise en forme pour le rendre un peu plus lisible)...

Ah ouais pardon, je savais pas que on pouvait faire la mise en forme, mais finalement j'ai réussi, merci quand même c'est super sympas

Rechercher des sujets similaires à "boucle"