Macro Convertir Colonne et Heures changées

Fermé
RechercheV1 Messages postés 5 Date d'inscription samedi 29 novembre 2014 Statut Membre Dernière intervention 1 juin 2015 - 29 mai 2015 à 12:11
RechercheV1 Messages postés 5 Date d'inscription samedi 29 novembre 2014 Statut Membre Dernière intervention 1 juin 2015 - 1 juin 2015 à 13:09
Bonjour à tous !

Je suis en train de me triturer l'esprit et je n'arrive toujours pas à trouver de solutions malgré mes recherches sur le net.
Je suis en train de créer un fichier de stats, ils comportent différentes petites macro que j'enregistre automatiquement. Seulement y en a une qui bug et impossible de savoir pourquoi.

Dans ma colonne J et K j'ai des dates et heures : 19/05/2015 08:32
et 19/05/2015 17:47, lorsque je le fais manuellement en faisant données/convertir tout fonctionne super bien.

Seulement quand je veux enregistrer cette manipulation en maccro : la première colonne (J) il va parfaitement exécuter mais la deuxième K : impossible ou alors il me la supprime et me met une heure sous forme 05:47 au lieu de 17:47. (Oui car ce que je souhaite c'est de séparer les heures des dates). Je ne sais plus quoi faire : pouvez-vous m'aider ?

Voici la maccro qu'il enregistre :
Sub Macro19()
'
' Macro19 Macro
'

'
Columns("K:K").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("M8").Select
ActiveWindow.SmallScroll ToRight:=2
Columns("J:J").Select
Selection.TextToColumns Destination:=Range("J1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Columns("L:L").Select
Selection.TextToColumns Destination:=Range("L1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Range("N19").Select
End Sub
A voir également:

3 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
29 mai 2015 à 14:20
Bonjour
Essayez ceci
Sub SeparerJourHeure()
    Application.ScreenUpdating = False
    Columns("K:K").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("K1:K" & [J100000].End(xlUp).Row).FormulaR1C1 = "=HOUR(RC[-1])"
    Range("K1:K" & [J100000].End(xlUp).Row).NumberFormat = "h:mm;@"
    Range("K1:K" & [J100000].End(xlUp).Row).FormulaR1C1 = "=RC[-1]-INT(RC[-1])"
    Range("J1:J" & [J100000].End(xlUp).Row).NumberFormat = "m/d/yyyy"

    Range("M1:M" & [L100000].End(xlUp).Row).FormulaR1C1 = "=HOUR(RC[-1])"
    Range("M1:M" & [L100000].End(xlUp).Row).NumberFormat = "h:mm;@"
    Range("M1:M" & [L100000].End(xlUp).Row).FormulaR1C1 = "=RC[-1]-INT(RC[-1])"
    Range("L1:L" & [J100000].End(xlUp).Row).NumberFormat = "m/d/yyyy"
End Sub

Cdlt
0
RechercheV1 Messages postés 5 Date d'inscription samedi 29 novembre 2014 Statut Membre Dernière intervention 1 juin 2015
29 mai 2015 à 14:42
IM-PE-CCABLE !! :D Merci beaucoup !!
Serait-il possible d'avoir les secondes avec ?
Et si c'est possible (ce n'est pas gênant si pas possible) ; lorsque cela créer les colonnes de définir un nom ?
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
29 mai 2015 à 14:59
Voilà pour les secondes

Sub SeparerJourHeure()
    Application.ScreenUpdating = False
    Columns("K:K").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("K1:K" & [J100000].End(xlUp).Row).FormulaR1C1 = "=HOUR(RC[-1])"
    Range("K1:K" & [J100000].End(xlUp).Row).NumberFormat = "h:mm:ss;@"
    Range("K1:K" & [J100000].End(xlUp).Row).FormulaR1C1 = "=RC[-1]-INT(RC[-1])"
    Range("J1:J" & [J100000].End(xlUp).Row).NumberFormat = "m/d/yyyy"

    Range("M1:M" & [L100000].End(xlUp).Row).FormulaR1C1 = "=HOUR(RC[-1])"
    Range("M1:M" & [L100000].End(xlUp).Row).NumberFormat = "h:mm:ss;@"
    Range("M1:M" & [L100000].End(xlUp).Row).FormulaR1C1 = "=RC[-1]-INT(RC[-1])"
    Range("L1:L" & [J100000].End(xlUp).Row).NumberFormat = "m/d/yyyy"
End Sub


lorsque cela créer les colonnes de définir un nom ?
Est-ce bien un Nom définit par colonne que voulez-vous exactement, ou bien un titre en haut de chaque colonne en J1, K1, L1, M1 ? Quels noms vous voulez y mettre?

Je me suis aperçu dans le code que je vous ai envoyé, que dans les colonnes des dates, je masque les heures en utilisant le format date "jj/mm:yy", mais elles sont toujours présentent, cela vous gêne t-il?

cdlt
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
29 mai 2015 à 15:19
En attendant votre réponse à la question posée ci-dessus concernant le nom des colonnes à définir, voici une correction qui supprime les heures définitivement dans les colonnes J et L
Sub SeparerJourHeure()
    Application.ScreenUpdating = False
    Columns("K:K").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("K1:K" & [J100000].End(xlUp).Row).FormulaR1C1 = "=HOUR(RC[-1])"
    Range("K1:K" & [J100000].End(xlUp).Row).NumberFormat = "h:mm:ss;@"
    Range("K1:K" & [J100000].End(xlUp).Row).FormulaR1C1 = "=RC[-1]-INT(RC[-1])"
    Range("K1:K" & [J100000].End(xlUp).Row).Value = Range("K1:K" & [J100000].End(xlUp).Row).Value
    Range("J1:J" & [J100000].End(xlUp).Row).NumberFormat = "0"
    For i = 1 To [J100000].End(xlUp).Row
        Cells(i, 10) = Fix(Cells(i, 10))
    Next
    Range("J1:J" & [J100000].End(xlUp).Row).NumberFormat = "m/d/yyyy"
    
    Range("M1:M" & [L100000].End(xlUp).Row).FormulaR1C1 = "=HOUR(RC[-1])"
    Range("M1:M" & [L100000].End(xlUp).Row).NumberFormat = "h:mm:ss;@"
    Range("M1:M" & [L100000].End(xlUp).Row).FormulaR1C1 = "=RC[-1]-INT(RC[-1])"
    Range("M1:M" & [J100000].End(xlUp).Row).Value = Range("M1:M" & [J100000].End(xlUp).Row).Value
    Range("L1:L" & [J100000].End(xlUp).Row).NumberFormat = "0"
    For i = 1 To [L100000].End(xlUp).Row
        Cells(i, 12) = Fix(Cells(i, 12))
    Next
    Range("L1:L" & [L100000].End(xlUp).Row).NumberFormat = "m/d/yyyy"
End Sub

A+
0
RechercheV1 Messages postés 5 Date d'inscription samedi 29 novembre 2014 Statut Membre Dernière intervention 1 juin 2015
1 juin 2015 à 10:02
Bonjour,

Désolée pour le temps de réponse, je viens d'essayer ce matin. Avec la macro que vous avez posté à 14h59, cela fonctionne très bien, j'ai les secondes avec ! Youpi :-)

Par contre pour la deuxième : il me marque "Erreur d'exécution '13' Incompatibilité Type" Débogage c'est la ligne : Cells(i, 10) = Fix(Cells(i, 10))

En fait, vous savez quand la macro crée les deux colonnes, elles notes #VALEUR!, sur la première ligne et j'aurai aimé qu'elle note autre chose, mais si cela est complexe, cela ne me gêne pas de la laisser comme ça :-)

HeureConnexion #VALEUR! HeureDeconnexion #VALEUR!
18/05/2015 7:24:14 18/05/2015 16:12:27

Dans l'idéal, j'aurai aimé :
HeureConnexion HeureConnexion HeureDeconnexion HeureDeconnexion
18/05/2015 7:24:14 18/05/2015 16:12:27
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
1 juin 2015 à 10:38
Bonjour
Corrigé avec les titres
j'ai remplacé:
HeureConnexion HeureConnexion HeureDeconnexion HeureDeconnexion
par
DateConnexion HeureConnexion DateDeconnexion HeureDeconnexion
qui me semblait plus approprié

Sub SeparerJourHeure()
    Application.ScreenUpdating = False
    Columns("K:K").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("K2:K" & [J100000].End(xlUp).Row).FormulaR1C1 = "=HOUR(RC[-1])"
    Range("K2:K" & [J100000].End(xlUp).Row).NumberFormat = "h:mm:ss;@"
    Range("K2:K" & [J100000].End(xlUp).Row).FormulaR1C1 = "=RC[-1]-INT(RC[-1])"
    Range("K2:K" & [J100000].End(xlUp).Row).Value = Range("K2:K" & [J100000].End(xlUp).Row).Value
    Range("J2:J" & [J100000].End(xlUp).Row).NumberFormat = "0"
    For i = 2 To [J100000].End(xlUp).Row
        Cells(i, 10) = Int(Cells(i, 10))
    Next
    Range("J2:J" & [J100000].End(xlUp).Row).NumberFormat = "m/d/yyyy"
    
    Range("M2:M" & [L100000].End(xlUp).Row).FormulaR1C1 = "=HOUR(RC[-1])"
    Range("M2:M" & [L100000].End(xlUp).Row).NumberFormat = "h:mm:ss;@"
    Range("M2:M" & [L100000].End(xlUp).Row).FormulaR1C1 = "=RC[-1]-INT(RC[-1])"
    Range("M2:M" & [J100000].End(xlUp).Row).Value = Range("M2:M" & [J100000].End(xlUp).Row).Value
    Range("L2:L" & [J100000].End(xlUp).Row).NumberFormat = "0"
    For i = 1 To [L100000].End(xlUp).Row
        Cells(i, 12) = Int(Cells(i, 12))
    Next
    Range("L2:L" & [L100000].End(xlUp).Row).NumberFormat = "m/d/yyyy"
    Range("J1:M1") = Array("DateConnexion", "HeureConnexion", "DateDeconnexion", "HeureDeconnexion")
End Sub

Cdlt
0
RechercheV1 Messages postés 5 Date d'inscription samedi 29 novembre 2014 Statut Membre Dernière intervention 1 juin 2015
1 juin 2015 à 11:56
Il me met en erreur : Cells(i, 12) = Int(Cells(i, 12))
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337 > RechercheV1 Messages postés 5 Date d'inscription samedi 29 novembre 2014 Statut Membre Dernière intervention 1 juin 2015
1 juin 2015 à 12:17
mettez i = 2 à la place de i =1
        For i = 2 To [L100000].End(xlUp).Row
        Cells(i, 12) = Int(Cells(i, 12))
    Next
0
RechercheV1 Messages postés 5 Date d'inscription samedi 29 novembre 2014 Statut Membre Dernière intervention 1 juin 2015
1 juin 2015 à 13:09
IM-PE-CCABLE !! :D Génial ! :D Ca marche :-) Merci Beaucoup
0