La somme dans une colonne

Bonjour à tous

Dans le cadre de mon apprentissage de Excel-VBA je suis entrain de voir le traitement sur la somme dans une colonne

Cela ne m'a pas posé de problème dans un premier temps

Je n'arrive pas à mettre par contre la somme de B1:B4 dans B5

Il me dit qu'il y a une erreur dans RANGE je pense que oui

la structure du code me parait correct pour la personnalisée.

capturez

Merci d'avance

EQUIV38

Bonjour,

Essai de supprimer le 5 dans Range("B5" & ...

Bonjour EQUIV38, le forum,

Salut oxydum

Une proposition.....à tester.....

Sub calculHervé()

 Dim dl As Integer                                        'définit la variable dl (dernière ligne)
 Dim maplage As Range                                     'définit la variable maplage (plage à sommer)
           dl = Range("B" & Rows.Count).End(xlUp).Row     'dernière ligne utilisée de la colonne B
  Set maplage = Range("B1:B" & dl)                        'définit la plage à sommer (de B1 à la dernière cellule)

   Range("B" & dl + 1) = Application.WorksheetFunction.Sum(maplage) 'ecrit la somme de la plage dans la première cellule vide de la colonne B
   Range("B" & dl + 1).Font.Bold = True
   Range("B" & dl + 1).Style = "currency"

End Sub

Cordialement,

Bonsoir,

J'ai refait l'exercice et cela fonctionne

Je suis avec des valeurs que j'additionne dans une colonne

Ces valeurs sont fixes

Je souhaiterais modifier une de ces valeurs dans ces cellules pour que mon total change

Cela me permettra d'avoir un ensemble assez complet pour y travailler et d'avancer dans mes connaissances

capturez

Merci d'avance

EQUIV38

Bonsoir xorsankukai

Merci de ton message

Je vais essayer votre proposition

Je vous tiens au courant

EQUIV38

Re,

Je souhaiterais modifier une de ces valeurs dans ces cellules pour que mon total change

Une autre version....

8classeur1.xlsm (78.32 Ko)

Cordialement,

Bonsoir,

Si dans l'ensemble ce code est assez compréhensible dans sa structure

Je n'arrive pas à trouver l'erreur de mon code Sub

capturet

Merci

Cordialement

EQUIV38

C'est simple : tu ne peux pas imbriquer des Sub

Donc :

Sub Exercice()

End Sub

Sub Worksheet_Change()

End Sub

Bonjour EQUIV38, oxydum ,

En complément à la réponse d'oxydum,

Soit tu utilises l'évènement change de ta feuille, la macro est alors active à chaque modif sur la plage définie:

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim i As Long, dl As Long
 Dim maplage As Range
  With Sheets("Feuil1")
            dl = .Range("B" & Rows.Count).End(xlUp).Row
   Set maplage = .Range("B2:B" & dl)
    If Not Application.Intersect(Target, maplage) Is Nothing Then
     cancel = True
     .Range("F2") = Application.WorksheetFunction.Sum(maplage)
     .Range("F2").Font.Bold = True
     .Range("F2").Style = "currency"
    End If
  End With
End Sub

Le code est à placer dans le module de la feuille concernée.

Soit tu préfères agir toi même sur ta macro (au moyen d'un bouton où raccourci clavier),

Sub Exercice()

 Dim dl As Integer                                        'définit la variable dl (dernière ligne)
 Dim maplage As Range                                     'définit la variable maplage (plage à sommer)
           dl = Range("B" & Rows.Count).End(xlUp).Row     'dernière ligne utilisée de la colonne B
  Set maplage = Range("B1:B" & dl)                        'définit la plage à sommer (de B1 à la dernière cellule)

   Range("F2" ) = Application.WorksheetFunction.Sum(maplage) 'ecrit la somme en F2
   Range("F2" ).Font.Bold = True
   Range("F2" ).Style = "currency"
End Sub

Code à placer dans un module standard.

Cordialement,

Bonjour à tous

Merci encore

J'ai mis en application les différentes options sur ma feuille d'exercice

Effectivement je ne pouvais pas connaître ces options qui me sont offertes

Si pour une somme de cellules dans une colonne par exemple de (B2 à B6) B7 étant la somme

Dans cette situation Target serait B7 et ma plage B2:B6

Peut-on écrire Set ma plage =. Range ("B2:B6" & dl) au lieu de ("B2:B" & dl) pour une colonne entière

Merci de vos remarques

EQUIV38

Bonjour,

Tu sélectionnes tes données par exemple B2:B6, clic-droit menu "Définir un nom", par exemple MesDonnees, alors

tu peux écrire :

Range("MesDonnees")

Pour référencer toute la colonne B, tu peux écrire aussi :

Range("B:B")

Est-ce que c'est clair comme ça ?

Merci de votre message

J'ai bien renommer la plage B2:B6 en mesdonnees

C'est dans certaines lignes dans le code que je n'arrive pas à insérer mesdonnees tout en comprenant le code

capture5

Merci encore

Conclusion à retravailler l'exercice

EQUIV38

Set maplage = .Range("mesdonnees")

Bonsoir,

Merci de ton conseil

j'ai repris le code

sur ma feuille excel j'ai bien la somme totale en B7 de B2:B6

Quand je fais valider pour passer à B3 il me met cette erreur mais le calcul est réactualisé il me renvoie sur la feuille1 je saisis

un nombre et l'erreur revient à chaque validation de cellule

Bonne fin de soirée

On avance mais c'est passionnant

capturezzz capture78

EQUIV38

Bonjour EQUIV38, oxydum,

Je n'ai pas d'erreur......

5classeur1.xlsm (35.54 Ko)

Ton erreur doit se situer ici:

       .Range("B7")=.Font.Bold = True
       .Range("B7")=.Style = "currency"

Supprime le signe =

       .Range("B7").Font.Bold = True
       .Range("B7").Style = "currency"

Codialement,

Bonjour,

J'espère que vous allez bien

Tout est normal

Merci encore

Maintenant on va refaire l'exercice

Avec les 2 possibilités

En ajoutant des couleurs et bordures

Effectivement notre ami excel respecte la logique

j'ai mis = alors qu'il ne le fallait pas

erreur d’inattention =Font.Bold=True c'est l'ensemble .Range("F").Font.Bold=True

EQUIV38

Rechercher des sujets similaires à "somme colonne"