Excel/VBA Somme d'une colonne dont on ne connait pas la longueur

Excel/VBA Somme d'une colonne dont on ne connait pas la longueur - VB/VBA/VBS - Programmation

Marsh Posté le 24-04-2004 à 17:50:38    

Bonjour,
 
J'essaie de calculer la somme de tous les montants d'une colonne (Celle ne contien jamais 2x le même nombre de chiffre). Bref imposible de faire Sum("F3:F50" ) par exemple.
 
Pourriez vous m'aider à modifier le code suivant s'il vou plait ? Pour l'instant il va se placer sur la derniere cellule de la colonen F3, mais je ne sais pas comment faire pour qu'il me fasse la somme de tous les montants de cette cellule...
 
Peut etre en fixant comme variable1 la cellule F3 et comme variable2 la cellule juste au dessus de la derniere cellule, puis de faire la somme des montants entre ces deux cellule du style Sum:(variable1:variable2)
 
MErcid 'avance pour votre aide,
 
Gregory
 
Sub Macro()
   
 
Range("F3" ).Select
 
Do Until ActiveCell = ""
 
ActiveCell.Offset(1, 0).Select
 
Loop
 
ActiveCell.Formula = Ici il me faudrait la somme de toute la colonne F3....
 
 
End Sub

Reply

Marsh Posté le 24-04-2004 à 17:50:38   

Reply

Marsh Posté le 24-04-2004 à 20:04:52    

Rebonjour,
 
J'ai trouvé la solution à mon probleme precedent, mais je pense que ce n'est pas la solution la plus adequate, donc si vous avez une meilleur idée... ;)
 
Cependant j'ai un autre probleme. Avec le code ci dessous, mon but est donc de la calculer la somme des montants de toute la colonne F3.
Ensuite, dans la colonne G3, je souhaite quechaque valeur presente dans chaque cellule de la colonne F3 soit divisée par la somme des montants de F3 (bref pour obtenir le pourcentage)
 
Ca fonctionne sauf que je n'arrive pas à alimenter chaque cellule de G3. Seule la premiere cellule s'alimente.
 
Voici mon code, pourriez vous m'aider à trouver une solution pour ça fonctionne ?
Merci d'avance,
 
Gregory
----------------
 
Range("F3" ).Select
Line = 0
 
Do Until ActiveCell = ""
ActiveCell.Offset(1, 0).Select
Line = Line - 1
Loop
 
Selection.Interior.ColorIndex = 40
ActiveCell.Formula = "=SUM(R[" & Line & "]C:R[-1]C)"
TotalVar = ActiveCell
 
'***
 
Line2 = 0
Range("G3" ).Select
ActiveCell.FormulaR1C1 = "=RC[-1]/" & TotalVar
 
Do Until Line2 = Line
ActiveCell.Offset(1, 0).Select
Line2 = Line2 - 1
Loop
 
A B C D  
1 5 9 0,25714286  
2 4 8  
3 3 7  
4 2 6  
5 1 5  
  35  

Reply

Marsh Posté le 16-05-2004 à 08:02:51    


Salut,
 
Tes explications ne sont pas très très claires mais voyons si j'ai bien tout compris...
 
Selon l'exemple que tu donnes,
 
A B C D  
1 5 9 0,25714286  
2 4 8    
3 3 7    
4 2 6    
5 1 5    
  35    
 
C1 = B1+B2
C2 = B1+B3
C3 = ...
--> j'en déduis que la cellule B1 (ou F3 dans ton fichier) sert de référence pour tes additions dans C (ou G) et 35 = somme de la colonne C (ou G)
 
D1 = 9/35 (ou C1/TotalVar soit 0,25714286)
--> et tu voudrais que D2 = 8/35 (C2/TotalVar), D3 = 7/35 (C3/TotalVar), D4 = ...
 
Si c'est bien çà, ce code devrait peut-être régler ton pb :
 
 
Sub TaMacro()
On Error GoTo err
 
    Dim ligne As Long
    Dim TotalVar As Long
    Dim i As Long
     
    Range("F3" ).Select
    ligne = ActiveCell.Row - 1
    Range("F3" ).End(xlDown).Select
    ligne = Range("F3" ).End(xlDown).Row - ligne
     
    Range("G3" ).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]+R[1]C[-1]"
    For i = 1 To ligne
        ActiveCell.Offset(1, 0).Range("A1" ).Select
        ActiveCell.FormulaR1C1 = "=R[-" & i & "]C[-1]+R[1]C[-1]"
    Next i
    With ActiveCell
        .Offset(1, 0).Range("A1" ).Select
        .FormulaR1C1 = "=SUM(R[-" & ligne & "]C:R[-1]C)"
        .Interior.ColorIndex = 40
        TotalVar = .Value
    End With
     
    Range("H3" ).Select
    ActiveCell.FormulaR1C1 = "=RC[-1]/" & TotalVar
    For i = 1 To ligne - 1
        ActiveCell.Offset(i, 0).FormulaR1C1 = "=RC[-1]/" & TotalVar
    Next i
     
    Exit Sub
err:
    MsgBox "La colonne F est vide !!", vbCritical
End Sub
 
 
A plus...
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed