Macro Convertir Colonne et Heures changées

RechercheV1 Messages postés 6 Statut Membre -  
RechercheV1 Messages postés 6 Statut Membre -
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

3 réponses

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. RechercheV1 Messages postés 6 Statut Membre
       
      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
  2. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. Frenchie83 Messages postés 2254 Statut Membre 339
       
      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
    2. RechercheV1 Messages postés 6 Statut Membre
       
      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
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
    1. RechercheV1 Messages postés 6 Statut Membre
       
      Il me met en erreur : Cells(i, 12) = Int(Cells(i, 12))
      0
      1. Frenchie83 Messages postés 2254 Statut Membre 339 > RechercheV1 Messages postés 6 Statut Membre
         
        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
    2. RechercheV1 Messages postés 6 Statut Membre
       
      IM-PE-CCABLE !! :D Génial ! :D Ca marche :-) Merci Beaucoup
      0