Microsoft 365 Conversion feuille vide

  • Initiateur de la discussion Initiateur de la discussion gabo29
  • 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 !

gabo29

XLDnaute Junior
Bonjour,

J'ai une macro qui récupère des infos sur un onglet et dans lequel je dois convertir la date. Parfois, cet onglet est vide et la conversion fait planter la macro et l'empêche tourner. Je cherche à contourner ce problème, voici le code que j'utilise :

Sheets("feuil1").Select

For Each c In Range("L1:L" & Range("L" & Rows.Count).End(xlUp).Row)
If Not IsDate(c.Value) Then
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

For Each c In Range("R1:R" & Range("R" & Rows.Count).End(xlUp).Row)
If Not IsDate(c.Value) Then
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

For Each c In Range("P1😛" & Range("P" & Rows.Count).End(xlUp).Row)
If Not IsDate(c.Value) Then
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

For Each c In Range("AG1:AG" & Range("AG" & Rows.Count).End(xlUp).Row)
If Not IsDate(c.Value) Then
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

For Each c In Range("AH1:AH" & Range("AH" & Rows.Count).End(xlUp).Row)
If Not IsDate(c.Value) Then
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

For Each c In Range("AB1:AB" & Range("AB" & Rows.Count).End(xlUp).Row)
If Not IsDate(c.Value) Then
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

For Each c In Range("AC1:AC" & Range("AC" & Rows.Count).End(xlUp).Row)
If Not IsDate(c.Value) Then
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

For Each c In Range("AD1:AD" & Range("AD" & Rows.Count).End(xlUp).Row)
If Not IsDate(c.Value) Then
c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

Pouvez vous m'aider svp ?
Merci d'avance,
Gabo29
 
Bonsoir Gabo, bonsoir le forum,

Essaie comme ça (à continuer sur toutes les plages...) :

VB:
Sheets("feuil1").Select
For Each c In Range("L1:L" & Range("L" & Rows.Count).End(xlUp).Row)
If c.Value <> "" Then
    If Not IsDate(c.Value) Then c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c

For Each c In Range("R1:R" & Range("R" & Rows.Count).End(xlUp).Row)
If c.Value <> "" Then
    If Not IsDate(c.Value) Then c.Value = DateSerial(Left(c.Value, 4), Mid(c.Value, 5, 2), Right(c.Value, 2))
End If
Next c
 
- 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
703
Réponses
10
Affichages
492
Retour