Modification de format non souhaité durant macro

Sanegone

XLDnaute Nouveau
Bonjour,

Durant une macro je manipule une chaine de caractères contenant 2 éléments : une date et une heure.

Pour une raison que je ne comprend pas, et sans le modifier durant la macro dans la colonne de sortie je n'ai pas tout le temps le même format !

Quelqu'un peut-il m'expliquer pourquoi ?

Code:
    VAR_NBR_AUTOMATE = Sheets("Import").Range("A65536").End(xlUp).Row
    For VAR_COMPTEUR = VAR_NBR_AUTOMATE To 1 Step -1
            With Worksheets("Import")
                .Activate
                .Cells(VAR_COMPTEUR, 4).Select
            End With
            Worksheets("Import").Cells(VAR_COMPTEUR, 4).NumberFormat = "General"
    Worksheets("Import").Cells(VAR_COMPTEUR, 4).Value = Left(Worksheets("Import").Cells(VAR_COMPTEUR, 5).Text, 10)
    Worksheets("Import").Cells(VAR_COMPTEUR, 5).Value = Right(Worksheets("Import").Cells(VAR_COMPTEUR, 5).Text, 8)
    Next VAR_COMPTEUR

Fichier test en pièce jointe.

Cordialement

PS : j'ai un niveau très bas en VBA et même en dev en général, expliquez comme à ignorant merci :)
 

Pièces jointes

  • test.xls
    408.5 KB · Affichages: 47
  • test.xls
    408.5 KB · Affichages: 53
  • test.xls
    408.5 KB · Affichages: 50

néné06

XLDnaute Accro
Re : Modification de format non souhaité durant macro

Bonjour Sanegone

Je ne saisis pas trop le problème .

Si tu souhaites cadrer à gauche avec retrait , aligne ta colonne D en "Format cellule" "Gauche (en retrait).
J'ai aussi modifié le code.

Essayes et dis-nous?

A+
 

Pièces jointes

  • Copie de test-4.xls
    414.5 KB · Affichages: 43
  • Copie de test-4.xls
    414.5 KB · Affichages: 44
  • Copie de test-4.xls
    414.5 KB · Affichages: 43

ROGER2327

XLDnaute Barbatruc
Re : Modification de format non souhaité durant macro

Bonjour à tous



Il ne faut jamais perdre de vue qu'Excel est un excellent produit étasunien. Dans cette petite partie du monde, on a une vision très particulière du calendrier (entre autres et par exemple, on y croit dur comme fer en l'existence d'un 29 février 1900) et de l'écriture des dates.

Dès qu'on sort de cette contrée, on a généralement d'autres visions. Souvent, on abrégera une date du général au particulier en donnant d'abord l'année, en précisant ensuite le mois dans l'année, puis le jour dans le mois : aujourd'hui 2012-07-17 (ainsi fait la norme ISO, en principe internationale).

Dans d'autres contextes courants, on ira du particulier au général en indiquant le jour du mois, le mois de l'année et finalement l'année : aujourd'hui 17/07/2012. On n'aura généralement pas l'idée saugrenue d'indiquer d'abord le mois, puis de venir à un peu plus de précision en donnant le jour du mois pour compléter par le renseignement le plus vague qu'est l'année. On n'aura encore moins l'idée de mélanger les différents systèmes.

C'est pourtant ce que fait Excel : ainsi, lisant 14/07/2012 (ligne 1) il estimera devoir comprendre 14 juillet 2012. L'instant d'après, lisant 12/07/2012 (ligne 4) il interprétera fort logiquement 7 décembre 2012. Enfin, pas toujours. Quelquefois, 12/07/2012 sera le 12 juillet 2012. Ça dépend du vent...

Bref, dès qu'on veut utiliser Excel hors les murs, on fait gaffe !

Trève de plaisanterie, dans votre cas, il semble que la formulation suivante fasse le boulot :​
VB:
Private Sub CommandButton1_Click()
Dim VAR_NBR_AUTOMATE&, VAR_COMPTEUR&
    With Worksheets("Import")
        VAR_NBR_AUTOMATE = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range(.Cells(1, 1), .Cells(VAR_NBR_AUTOMATE, 1)).NumberFormat = "dd/mm/yyyy"
        For VAR_COMPTEUR = VAR_NBR_AUTOMATE To 1 Step -1
            .Cells(VAR_COMPTEUR, 4).Value = CDate(Left(.Cells(VAR_COMPTEUR, 5).Text, 10))
            .Cells(VAR_COMPTEUR, 5).Value = Right(.Cells(VAR_COMPTEUR, 5).Text, 8)
        Next VAR_COMPTEUR
    End With
End Sub
À vérifier !​


Bon courage !



ROGER2327
#6126


Mercredi 4 Tatane 139 (Ascension du Mouchard, statisticien, psychiatre et policier - fête Suprême Quarte)
29 Messidor An CCXX, 0,5395h - blé
2012-W29-2T01:17:41Z
 

MJ13

XLDnaute Barbatruc
Re : Modification de format non souhaité durant macro

Bonjour à tous

Comme dit Roger :), les dates sur Excel, c'est la galère, surtout lors d'importations de données.

Une petite macro à tester en sélectionnant les celules à décomposer.

Code:
Sub Converti_DateTexte_Date_Heure()
On Error Resume Next
For Each Cell In Selection
Cell.Value = CDate(Cell.Text)
date1 = Int(Cell)
heure = Cell - Int(Cell)
Cell.Value = date1
Cell.Offset(0, 1).Value = heure
Next
End Sub
 

Discussions similaires

Réponses
3
Affichages
325

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87