Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Faire somme en horizontal et vertical

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arpette

XLDnaute Impliqué
Bonsoir à toutes et à tous,
j'ai repris tout mon projet pas à pas. Avec mon USF je rempli le tableau de gauche et qui me renvoi l'article dans les tableaux de droite (4 tabeaux).
Ce que je souhaite, sur le premier tableau de droite dans la zone verte, si la cellule en G n'est pas vide et que je saisis des valeurs de H à M, avoir le total en N et le total de N en N21. Après il faudrait O soit le total de N* par la valeur de D et avoir le total en O21.
Merci de votre aide, je joints mon fichier
@+
 

Pièces jointes

Re : VBA Faire somme en horizontal et vertical

Salut,

Si ce n'est que pour faire la somme horizontale et verticale du premier tableau, voilà le fichier avec les formules écrites comme tu l'as demandé.

Bonne journée.

John
 

Pièces jointes

Re : VBA Faire somme en horizontal et vertical

Re, j'ai résolu mon problème en m'inspirant du code Gorfael. Pour ceux que celà pourrait intéresser voici le code
@+
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim pl As Range, i As Range, r As Range, Dli As Long, Li As Long, Col As Byte, Col1 As Byte
Dim a&
Application.ScreenUpdating = False

If Not Intersect(Target, Range("H5:M20")) Is Nothing Then
a = Target.Row
    'Somme en N des lignes H5 à M20
    Range("N" & a) = Application.WorksheetFunction.Sum(Range("H" & a & ":M" & a))
    Range("O" & a) = Range("N" & a) * Range("D" & a)
    'Somme des colonnes N et O
    Range("N21") = Application.WorksheetFunction.Sum(Range("N" & a))
    Range("O21") = Application.WorksheetFunction.Sum(Range("O" & a))
End If

If Target.Count > 1 Then Exit Sub
  
  Application.EnableEvents = False
  
  If Not Intersect(Target, Range("A5:A20")) Is Nothing Then
    If Target.Value <> "" Then
        Target.Offset(0, 6).Value = Target.Value
        Target.Offset(20, 6).Value = Target.Value
        Target.Offset(39, 6).Value = Target.Value
        Target.Offset(58, 6).Value = Target.Value
    
        ElseIf Target.Value = "" Then
        Target.Offset(0, 1).Value = ""
        Target.Offset(0, 2).Value = ""
        Target.Offset(0, 3).Value = ""
        Target.Offset(0, 4).Value = ""
        Target.Offset(0, 6).Value = ""
        Target.Offset(20, 6).Value = ""
        Target.Offset(39, 6).Value = ""
        Target.Offset(58, 6).Value = ""
        
    End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
313
Réponses
12
Affichages
774
Réponses
5
Affichages
402
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…