Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 18h54   #1
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : août 2006
Messages : 86
Points : 29
Points : 29
Par défaut Somme entre deux mots

Bonsoir,

je voudrais calculer la somme d'une colonne entre deux cellules dont les critères sont définies dans une autre colonne.

Exemple : Colonne A => comporte les chiffres à calculer. Cette plage est délimitée par une mot qui se trouve dans la colonne B.

Je voudrais donc récupérer le nombre de lignes pour ma formule entre le début de ce mot, puis entre ce dernier et le prochain, qui peut être différent ou identique.

Exemple :

                 Col A            Col B

Ligne   1          12                
        2          24
        3          40
        4       S/TOTAL            RDC     <= Défiini la fin de plage
        5          50
        6          80
        7       S/TOTAL            R+1
        8         100
        9         120
       10          50
       11         400
       12          50 
       13          90 
       14       S/TOTAL            RDC    <= ou R+2 ...
Merci pour votre aide, car là je bloque totalement

David
breizhgen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 14h53   #2
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Bonjour David,

D'abord, une petite question : Sais-tu à quelle ligne COMMENCE ta plage de données souhaitée ?

Penses-tu qu'il soit nécessaire d'utiliser une macro ? Si tes plages ne varient pas, tu peux directement mettre ton calcul dans ta cellule "Sous-total".

Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 16h09   #3
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 86
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : août 2006
Messages : 86
Points : 29
Points : 29
Bonsoir,

non en fait les colonnes à calculer sont faites dynamiquement.

J'ai trouvé la solution, mais en passant par des voies détournées :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Sub CALCULMETRE_NIVEAU()
 
Dim NIV As Integer
    NIV = Sheets("feuil1").Range("R6")
 
Dim CheminExemple As String
        CheminExemple = Sheets("INITIALISATION").Range("J7")
 
Workbooks.Open Filename:= _
        "" & CheminExemple & "\C GESTION\B GESTION METRE vierge.xls", _
        UpdateLinks:=3
 
'Dim CheminChantier As String
        'CheminChantier = Sheets("INITIALISATION").Range("J5")
 
 
 
Dim c As Range
Dim Lig As Long
Dim Ligne As Integer
Dim CalcuLigne As Integer
 
Sheets("1  10000").Select
 
Dim boucle As Integer
boucle = NIV
 
For nombre = 1 To boucle
 
Set c = Worksheets("1  10000").Range("AK:AK").Find("R*", LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
    Lig = c.Row
    Set c = Nothing
    End If
Set c1 = Worksheets("1  10000").Range("AK" & Lig & ":AK200").Find("R*", LookIn:=xlValues, LookAt:=xlWhole)
If Not c1 Is Nothing Then
    Lig1 = c1.Row
    Set c1 = Nothing
    End If
 
   Cal1 = Lig1 - 1
   Cal = Lig + 1
 
    Sheets("1  10000").Select
 
    Range("Y" & Lig1).Select
 
    ActiveCell.FormulaLocal = "=SOMME(Y" & Cal & ":Y" & Cal1 & ")"
 
        Range("Y" & Lig1).Select
    Selection.AutoFill Destination:=Range("Y" & Lig1 & ":AG" & Lig1), Type:=xlFillDefault
    Range("Y" & Lig1 & ":AG" & Lig1).Select
    Range("Y" & Lig1).Select
 
    Range("T" & Lig).Select
    Selection.ClearContents
 
 
Next nombre
 
Range("T6").Select
    Selection.AutoFill Destination:=Range("T6:T155"), Type:=xlFillDefault
    Range("T6:T155").Select
    Range("T5").Select
 
Set c = Worksheets("1  10000").Range("AK:AK").Find("R*", LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
    Lig = c.Row
    Set c = Nothing
    End If
 
    Cal1 = Lig - 1
 
    Sheets("1  10000").Select
 
    Range("Y" & Lig).Select
 
    ActiveCell.FormulaLocal = "=SOMME(Y6:Y" & Cal1 & ")"
 
        Range("Y" & Lig).Select
    Selection.AutoFill Destination:=Range("Y" & Lig & ":AG" & Lig), Type:=xlFillDefault
    Range("Y" & Lig & ":AG" & Lig).Select
    Range("Y" & Lig).Select
 
    Application.Run "'SITUATION INITIALE.xls'!CalculMetre_FIN"
 
End Sub
Il y a sans doute plus simple mais je suis pas assez calé.

Merci

David
breizhgen est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h17.


 
 
 
 
Partenaires

Hébergement Web