Variable dans une fnction SUM

Omelli

Nouveau membre
Bonjour à tous,

Je travaille sur un fichier avec 2 colonnes : la colonne A avec des dates, la colonne B avec les temps.

8/2/2012 3:20
8/2/2012 6:30
8/2/2012 1:02

9/2/2012 2:01

10/2/2012 4:05
10/2/2012 4:06
10/2/2012 3:01

J'écris une macro qui à la dernière ligne de chaque jour doit faire une somme des temps de la colonne B dans la colonne C.
Seulement voilà, mon code ne fonctionne pas :

Code:
Sub TotalTemps()

Dim B As Integer
Dim DEBUT As Integer
Dim FIN As Integer


B = ActiveSheet.UsedRange.Rows.Count
Columns("G:G").NumberFormat = "hh:mm"

For B = 2 To B

    If Cells(B, 1) <> "" And Cells(B - 1, 1) = "" Then
    Cells(B, 2).Value = DEBUT

    ElseIf Cells(B, 1) <> And Cells(B + 1, 1) = "" Then
    Cells(B, 2).Value = FIN
    Cells(B, 3).FormulaR1C1 = "=SUM(" & DEBUT& " : " &FIN& ")"

    ElseIf Cells(B - 1, 2) = "" And Cells(B + 1, 2) = "" Then
    Cells(B, 3) = Cells(B, 2)
    
    End If

Next B

End Sub



Auriez une idée d'où pourrait venir mon problème ? C'est la première fois que j'essaye d'intégrer une variable dans une fonction SUM, donc je suis ouvert aux conseils :)

Bonne journée

 

zeb

Modérateur
Salut,

Et comme je suis extralucide, je dois deviner que tu cherches à programmer une fonction en VBA/Excel.

Ton erreur est facile à tracer.
Affiche la valeur de "=SUM(" & DEBUT& " : " &FIN& ")" dans un MsgBox ou avec Debug.Print.
Tu vas voir, ça va te sauter aux yeux ;)

-----------------------------------------

Tant qu'à faire que tu es là, voici une petite revue de code.
Tu y trouveras des choses très pertinentes, pas mal de pinaillage, mais un avis autorisé :o

Code:
Sub TotalTemps()
     
    ' // Sois explicite dans tes noms de variables
    ' // J'espère que ces variables ne contiendront pas
    ' // des n° de colonne car Integer est un type trop petit !
    Dim B As Integer
    Dim DEBUT As Integer
    Dim FIN As Integer
     
    ' // Bing raté ! Déclare B comme un Long, pas un Integer
    ' // Bien l'utilisation de UsedRange !
    B = ActiveSheet.UsedRange.Rows.Count
    
    ' // G tout court, ça marche aussi
    ' // Partout ailleurs tu utilises des n° de colonnes, mets donc un 7 ici.
    Columns("G:G").NumberFormat = "hh:mm"

    ' // NAIN PORTE QUOI
    ' // M'enfin, comment B peut être à la fois la variable et la borne !!!!!!!!!!
    For B = 2 To B
    
        ' // C'est la valeur de la cellule que tu vérifies ?
        If Cells(B, 1) <> "" And Cells(B - 1, 1) = "" Then
        
            ' // Ah bah tu vois que tu sais utiliser Value !
            ' // Qu'y a-t-il dans DEBUT ? ...
            Cells(B, 2).Value = DEBUT
         
        ' //    coquille ? ---v
        ElseIf Cells(B, 1) <> "" And Cells(B + 1, 1) = "" Then
        
            ' // Qu'y a-t-il dans FIN ? ...
            Cells(B, 2).Value = FIN
            
            ' // Mettre ici un peu de débug :
            Debug.Print "=SUM(" & DEBUT & " : " & FIN & ")"
            Stop
            ' // Il n'y a rien, ni dans DEBUT, ni dans FIN !
            
            ' // Ohlala ! Utilise Formula, c'est plus facile.
            ' // Je déconseille FormulaLocale mais ça peut être sympa quand même
            Cells(B, 3).FormulaR1C1 = "=SUM(" & DEBUT & " : " & FIN & ")"
         
        ElseIf Cells(B - 1, 2) = "" And Cells(B + 1, 2) = "" Then
        
            Cells(B, 3) = Cells(B, 2)
         
        End If
    
    ' // Si la dernière fois que tu as écris un bout de BASIC, c'était en 1985, tu es excusé.
    ' // Dans tous les autres cas, tu mérites le fouet : Indente correctement ton code, ça vaudra mieux.
    Next B
     
End Sub

Des questions, des remarques, des critiques... ton avis ?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 120
Membres
1 586 398
Dernier membre
mookie767
Partager cette page
Haut