Accueil > > > VBA EXCEL TRANSFORME UNE DATE ENREGISTRÉE AU FORMAT ANGLAIS (BOGUE D'INVERSION MOIS / JOUR)
VBA EXCEL TRANSFORME UNE DATE ENREGISTRÉE AU FORMAT ANGLAIS (BOGUE D'INVERSION MOIS / JOUR)
Information sur la source
Description
A ma grande surprise, je constate qu'il existe encore des fichiers Excel contenant l'anomalie liée au format date anglais(cf. pièce jointe). Notez l'inversion entre le format affiché (01/02/2006) et le format enregistré (02/01/2006).
Source
- Sub setRegionalDate(ByVal FirstLineIndex As Long, ByVal LastLineIndex As Long, ByVal ColIndex As Long)
- 'Version 1 : corrige pour l'intervalle spécifié toutes les dates
- 'enregistrées au format anglais (bogue d'inversion)
-
- 'Variables de traitement
- Dim myDate As Date
- Dim i As Long
-
- ' Paramètres à définir pour chaque traitement :
- ' - FirstLineIndex N° de la première ligne à traiter
- ' - LastLineIndex N° de la dernière ligne à traiter
- ' - ColIndex N° de la colonne à traiter
- ' Exemple d'utilisation :
- ' call setRegionalDate(1, 253, 2) Vérifie et corrige le format date pour l'intervalle
- ' de lignes [1, 253] de la colonne 2.
-
- 'Gestionnaire d'erreur
- On Error GoTo Except
-
- For i = FirstLineIndex To LastLineIndex
- 'Sélectionne la cellule
- Cells(i, ColIndex).Select
- With Selection
- If IsDate(.Value) Then
- 'Condition d'inversion
- If .NumberFormat = "mm/dd/yyyy" Then
- 'Mémorise la date
- myDate = .Value
- 'Transforme le type du format date
- .NumberFormat = "dd/mm/yyyy"
- 'Transforme la date en inversant les valeurs du mois et du jour
- .Value = CDate(Month(myDate) & "/" & Day(myDate) & "/" & Year(myDate))
- End If
- End If
- End With
- Next i
-
- Exit Sub
- Except:
- Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
- Err.Description & Space(6), vbCritical + vbOKOnly, " Fonction de correction du type date")
- End Sub
- -----------------------------------------------------------------------------------------
- Sub setRegionalDate()
- 'Version 2 : corrige pour la plage sélectionnée toutes les dates
- 'enregistrées au format anglais (bogue d'inversion)
-
- 'Variables de traitement
- Dim myDate As Date
- Dim myRange As Range
- Dim i As Long, j As Long
-
- 'Gestionnaire d'erreur
- On Error GoTo Except
-
- 'Boîte de dialogue : demande de confirmation
- i = Selection.Cells.Count
- If i = 1 Then
- If MsgBox(vbCr & "Demande de confirmation" & vbCr & vbCr & _
- "Une seule cellule est sélectionnée. Confirmez votre sélection ?" & Space(6), vbQuestion + vbYesNo, _
- " Fonction de correction du type date") = vbNo Then Exit Sub
- End If
-
- For Each myRange In Selection
- If IsDate(myRange) Then
- With myRange
- 'Condition d'inversion
- If .NumberFormat = "mm/dd/yyyy" Then
- 'Mémorise la date
- myDate = .Value
- 'Transforme le type du format date
- .NumberFormat = "dd/mm/yyyy"
- 'Transforme la date en inversant les valeurs du mois et du jour
- .Value = CDate(Month(myDate) & "/" & Day(myDate) & "/" & Year(myDate))
- If Month(.Value) <> Month(myDate) Then j = j + 1
- End If
- End With
- End If
- Next
-
- 'Boîte de dialogue : nbre de dates corrigées sur nbre de cellules vérifiées
- Call MsgBox(vbCr & "Résultat du traitement :" & vbCr & vbCr & _
- j & " date(s) corrigée(s) sur " & i & " cellule(s) sélectionnée(s)." & Space(6), vbInformation + vbOKOnly, _
- " Fonction de correction du type date")
-
- Exit Sub
- Except:
- 'Boîte de dialogue : message d'erreur
- Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
- Err.Description & Space(6), vbCritical + vbOKOnly, " Fonction de correction du type date")
- End Sub
- -----------------------------------------------------------------------------------------
Sub setRegionalDate(ByVal FirstLineIndex As Long, ByVal LastLineIndex As Long, ByVal ColIndex As Long)
'Version 1 : corrige pour l'intervalle spécifié toutes les dates
'enregistrées au format anglais (bogue d'inversion)
'Variables de traitement
Dim myDate As Date
Dim i As Long
' Paramètres à définir pour chaque traitement :
' - FirstLineIndex N° de la première ligne à traiter
' - LastLineIndex N° de la dernière ligne à traiter
' - ColIndex N° de la colonne à traiter
' Exemple d'utilisation :
' call setRegionalDate(1, 253, 2) Vérifie et corrige le format date pour l'intervalle
' de lignes [1, 253] de la colonne 2.
'Gestionnaire d'erreur
On Error GoTo Except
For i = FirstLineIndex To LastLineIndex
'Sélectionne la cellule
Cells(i, ColIndex).Select
With Selection
If IsDate(.Value) Then
'Condition d'inversion
If .NumberFormat = "mm/dd/yyyy" Then
'Mémorise la date
myDate = .Value
'Transforme le type du format date
.NumberFormat = "dd/mm/yyyy"
'Transforme la date en inversant les valeurs du mois et du jour
.Value = CDate(Month(myDate) & "/" & Day(myDate) & "/" & Year(myDate))
End If
End If
End With
Next i
Exit Sub
Except:
Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
Err.Description & Space(6), vbCritical + vbOKOnly, " Fonction de correction du type date")
End Sub
-----------------------------------------------------------------------------------------
Sub setRegionalDate()
'Version 2 : corrige pour la plage sélectionnée toutes les dates
'enregistrées au format anglais (bogue d'inversion)
'Variables de traitement
Dim myDate As Date
Dim myRange As Range
Dim i As Long, j As Long
'Gestionnaire d'erreur
On Error GoTo Except
'Boîte de dialogue : demande de confirmation
i = Selection.Cells.Count
If i = 1 Then
If MsgBox(vbCr & "Demande de confirmation" & vbCr & vbCr & _
"Une seule cellule est sélectionnée. Confirmez votre sélection ?" & Space(6), vbQuestion + vbYesNo, _
" Fonction de correction du type date") = vbNo Then Exit Sub
End If
For Each myRange In Selection
If IsDate(myRange) Then
With myRange
'Condition d'inversion
If .NumberFormat = "mm/dd/yyyy" Then
'Mémorise la date
myDate = .Value
'Transforme le type du format date
.NumberFormat = "dd/mm/yyyy"
'Transforme la date en inversant les valeurs du mois et du jour
.Value = CDate(Month(myDate) & "/" & Day(myDate) & "/" & Year(myDate))
If Month(.Value) <> Month(myDate) Then j = j + 1
End If
End With
End If
Next
'Boîte de dialogue : nbre de dates corrigées sur nbre de cellules vérifiées
Call MsgBox(vbCr & "Résultat du traitement :" & vbCr & vbCr & _
j & " date(s) corrigée(s) sur " & i & " cellule(s) sélectionnée(s)." & Space(6), vbInformation + vbOKOnly, _
" Fonction de correction du type date")
Exit Sub
Except:
'Boîte de dialogue : message d'erreur
Call MsgBox(vbCr & "Erreur n° " & Err.Number & vbCr & vbCr & _
Err.Description & Space(6), vbCritical + vbOKOnly, " Fonction de correction du type date")
End Sub
-----------------------------------------------------------------------------------------
Conclusion
catégorie : VBA Excel voir la capture d'écran pour comprend le type d'anomalie
Historique
- 23 mars 2006 14:32:52 :
- Ajout d'un exemple (capture d'écran)
- 23 mars 2006 14:34:53 :
- Ajout d'une capture d'écran en exemple d'anomalie
- 23 mars 2006 14:41:00 :
- Correction faute de frappe
- 23 mars 2006 15:02:03 :
- Côte de commentaire oubliée
- 23 mars 2006 18:58:54 :
- Correction grammaticale
- 23 mars 2006 19:04:33 :
- erreur de manip
- 29 mars 2006 11:43:21 :
- Catégorie VBA
- 13 avril 2006 17:15:49 :
- Corrections effectuées sur la plage de cellules sélectionnées (pas d'argument)
- 13 avril 2006 17:26:04 :
- Rajout capture d'écran
- 14 avril 2006 17:17:20 :
- Version 2 : ajout de boîtes de dialogue
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
comment mettre une date [ par nad ]
je voudrais, au lancement d'une feuille de mon application que dans un textBox il se mette automatiquement la date du jour. Comment faire?J'aurais ens
Date courante pour un nom de fichier [ par Ph.D ]
Salut,Je souhaite créer des fichiers d'archives avec comme nom la date du jour de sauvegarde (ex : 20010909.arc), je sais récupérer la date, extraire
date [ par wareg ]
bonjourqu'elle est le code qui permet de calculer la différence entre deux dates au format jour, mois et année, sachant qu'il y a des text1, 2 et 3 po
NOW - (1 mois silvouplé et pas 1 jour) [ par Misutsu ]
Bah voilà, il me reste un petit truc à rectifier et je ne trouve pas comment.quand on fait : now - 1On obtient la date d'aujourd'hui moin
Date au format: "Aug 2 08:40:14 2002" [ par jockos ]
J'ai récupéré une date dans un fichier qui a le format suivant:"Aug 2 08:40:14 2002"Mon gros Problème, c'est le "Aug", qui designe évidemment le mois
Problème d'insertion en colonnes dans une liste!!!!!!!!! [ par stagiaireiut ]
Bonjour, je vais essayer d'être clair, j'ai un problème qui ne doit pas être très compliqué à résoudre, mais dont je ne parviens pas à trouver la soul
type as DATE [ par sygale ]
kk1 peut m'expliquer : ? format$(cdate(format(cdate("31/12/2999"),"DD/MM/YY")),"DD/MM/YYYY") = 31/12/1999 ??Moi je trouve pas ca logique du tout !!!Sy
date : premier jour du mois [ par bbProg ]
je cherche à savoir quel jour correspond à quelle date ( exemple le premier septembre 2001 était un samedi, un vendredi ? etc... )et j'avoue que je n
format date et access???? [ par spiderone ]
j'essaie de recuperer la date et heure actuelle et de la metter dans access mais y veut pas>>> type incompatibledim tempDate as stringtempDat
format de date [ par wholehog2 ]
je suis sou vb.net et je n'arrive pas à mettre une date au format que je veux, c'est à dire "dd/mmmm/yyyy"il me dit ceci :Une exception non gérée du t
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|