Valeur selon l'heure dans fichier excel

Résolu
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 1 juin 2007 à 22:35
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 2 juin 2007 à 21:49
Bonjour à tous,

Je rencontre une difficulté dans un script sour VBA excel.

Dans mon fichier excel, dans la feuille Ajout, dans la colone D il y à des heures. Je voudrais que si par exemple dans la celule D2 il est écrit 06:00:00 AM, qu'il insert dans la celule K2 la valeur JOUR. Et C.est la même chose pour la valeur D3 ect....... en descendant la colone.

Je doid tenir en considération que:
5:00:00 AM à 13:59:00 PM = JOUR
14:00:00 PM à 17:59:00 PM = SOIR
18:01:00 PM à 4:59:00 AM = NUIT

Voici une partie du script:
Private Sub CommandButton1_Click()
msg = "Voulez-vous continuer l'enregistrement ?"
Style = vbYesNo + vbDefaultButton1
Réponse = MsgBox(msg, Style, Title)
If Réponse = vbYes Then

Application.ScreenUpdating = False
                                                                                     'Coller AH dans ajout
Sheets("Ajout").Select
    Range("A2").Select
    ActiveSheet.Paste
    Selection.TextToColumns Destination: =Range("A2"), DataType:= xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(28, 1), Array(37, 1), Array(44, 1), _
        Array(53, 1), Array(57, 1), Array(72, 1), Array(97, 1), Array(113, 1), Array(124, 1)), _
        TrailingMinusNumbers:=True
    Columns("A:L").Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
                                                                   'TYPE DE PRODUITS RECHERCHEV
    Range("M2").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-12],Wac!C[-12]:C[-11],2,0)"
    Selection.AutoFill Destination:=Range("M2:M8051"), Type:=xlFillDefault
    Range("M2:M8051").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Cells.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("A2").Select
                                                                        'Inserer le quart de travail dans la colone K (jour, soir ou nuit)

    
    Application.CutCopyMode = False
    End If
    Application.ScreenUpdating = True
End Sub

Comment faire.?

Merci de vôtre aide

26 réponses

avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
2 juin 2007 à 13:54
Super, ça fonctionne.

Dernière question, Dans la colone K, quand je met = Tranche_Horaire(D2),si dans la colone B il n'y a pas de valeur, il me met par défault la valeur Nuit.

Comment faire pour qu'il n'y est rien?
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
2 juin 2007 à 14:17
J'ai changé le script pour:



Private Sub CommandButton1_Click()
msg = "Voulez-vous continuer l'enregistrement ?"
Style = vbYesNo + vbDefaultButton1
Réponse = MsgBox(msg, Style, Title)
If Réponse = vbYes Then

Application.ScreenUpdating = False
                                                                 'Coller AH dans ajout
Sheets("Ajout").Select
    Range("A2").Select
    ActiveSheet.Paste
    Selection.TextToColumns Destination: =Range("A2"), DataType:= xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(7, 1), Array(28, 1), Array(37, 1), Array(44, 1), _
        Array(53, 1), Array(57, 1), Array(72, 1), Array(97, 1), Array(113, 1), Array(124, 1)), _
        TrailingMinusNumbers:=True
    Columns("A:L").Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Range("A1").Select
                                                                                    'TYPE DE PRODUITS
    Range("M2").Select
    ActiveCell.FormulaR1C1 = "= VLOOKUP(RC[-12],Wac!C[-12]:C[-11],2,0)"
    Selection.AutoFill Destination:=Range("M2:M8051"), Type:=xlFillDefault
    Range("M2:M8051").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Cells.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("A2").Select
   
                                                         'Insertion formule dans la colone K
     Range("L2").Select
    ActiveCell.FormulaR1C1 = "= Tranche_Horaire(RC[-8])"
    Range("L2").Select
    Selection.AutoFill Destination:=Range("L2:L15000"), Type:=xlFillDefault
    Range("L2:L15000").Select
    Columns("L:L").Select
    Selection.Copy
    Range("L1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A2").Select
    Application.CutCopyMode = False
   
                                                                           'Supprimer les lignes vides
   
    Dim LastLine As Long, i As Long

    LastLine = Range("A65536").End(xlUp).Row + 1
  
    For i = LastLine To 1 Step -1
        If Cells(i, 2).Value = vbNullString Then
            Rows(i).Delete
        End If
    Next i
 
Else
End If
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    UserForm1.Hide
End Sub


Sauf qu'il ne veux pas supprimer les lignes même s'il ne contient aucunes donnée dans la celule B
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
2 juin 2007 à 17:02
Salu Avyrex, 
Pour corriger le problème de la cellule vide,
tu vas devoir combiner les deux solutions proposées.


ActiveCell.FormulaR1C1 = "=SI(RC[-8]="";"";Tranche_Horaire(RC[-8]))"


Salut MPi,
effectivement  Hour au lieu de Heure .
Déformation professionnelle. Trop habitué à Access.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
2 juin 2007 à 17:07
essaiesaussi avec
ActiveCell.FormulaR1C1 = "=SI(RC[-8]=Null;Null;Tranche_Horaire(RC[-8]))"

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
2 juin 2007 à 19:12
Re bonjour,

J'ai essayé les 2 mais riens ne change.

ActiveCell.FormulaR1C1 = "=SI(RC[-8]=Null;Null;Tranche_Horaire(RC[-8]))" = Me marque toujours Nuit par défault.

ActiveCell.FormulaR1C1 = "=SI(RC[-8]="";"";Tranche_Horaire(RC[-8]))" = même résultat.
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
2 juin 2007 à 21:49
Merci beaucoup à vous 2 pour votres aide.  
0
Rejoignez-nous