XL 2013 Somme VBA sur plusieurs ligne

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 !

Nico77

XLDnaute Nouveau
Bonjour

J'aimerais faire une addition avec récupérations du chiffre. Voici le code qui fonctionne et me convient.

VB:
Sub Addition()


Range("c75").Value = Range("c75").Value + Range("b75").Value

End Sub

Mais il calcule uniquement une seul ligne. J'aimerais que cela ce face sur plusieurs ligne.
Mais comment.

Arriver des lettres a additionné a Quantité lettres en stock en gardent la quantité en stock.
Arriver des chiffres a additionné a Quantité chiffres en stock en gardent la quantité en stock.

ATTENTION : Je ne doit pas pouvoir appuyer deux sur le bouton, sauf si je change B2 par un autre chiffre.

Le calcule se fait sur les parties vertes.

Merci
 

Pièces jointes

Bonjour,

Essaie :

VB:
Sub Addition()
  Dim C As Range
  For Each C In Union([B47:B72], [I47:I72], [P47:P72], [B77:B86], [I77:I86], [P77:P86])
    If C <> 0 Then
      C.Offset(, 1) = C.Offset(, 1) + C
    End If
  Next C
End Sub

Daniel
Merci cela fonctionne parfaitement.

Je vais mètre un CCleaner pour éviter une nouvelle addition avec les mêmes quantité.

Ou est-il possible de mètre une condition en B2 si cellule non modifier l'exécution de la macro non possible?

Merci fortement.

Bonne soirée
 
Bonsoir Nico77, salut danielco,

Pour moi ça reste nébuleux.

1) Vous aviez écrit Range("c75").Value = Range("c75").Value + Range("b75").Value

Mais B75 et C75 sont des cellules fusionnées alors pourquoi traiter la ligne 75 ?

2) La macro de danielco ne traite pas les plages W47:W72 et W77:W86 et ça ne vous gêne pas, pourquoi ?

3) En bon français que veulent dire "Arriver des lettres" et "Arriver des chiffres" ?

A+
 
Bonsoir Nico77, salut danielco,

Pour moi ça reste nébuleux.

1) Vous aviez écrit Range("c75").Value = Range("c75").Value + Range("b75").Value

Mais B75 et C75 sont des cellules fusionnées alors pourquoi traiter la ligne 75 ?

2) La macro de danielco ne traite pas les plages W47:W72 et W77:W86 et ça ne vous gêne pas, pourquoi ?

3) En bon français que veulent dire "Arriver des lettres" et "Arriver des chiffres"
 
Bonsoir

Le 1) j'étais bien sur les cellules "c75" et "b75" mais avant d'envoyer le dossier j'ai fait une petite modification.
Le 2) c'est peut être une erreur de sa part mais il faut bien que celui qui fait une demande d'aide ce triture un peut les ménage pour au moins comprendre comment fonctionne la demande.

Le 3) rien de complique c'est une arriver de lettre ou de chiffre en plus

Merci
 
Bonjour Nico77, danielco, le forum,

Donc il faut traiter aussi la colonne W, j'ai revu la macro :
VB:
Sub Addition()
Dim c As Range
With [B47:B72,B77:B86,I47:I72,I77:I86,P47:P72,P77:P86,W47:W72,W77:W86]
    For Each c In .Cells
        If IsNumeric(CStr(c)) And IsNumeric(c(1, 2)) Then c(1, 2) = c(1, 2) + c
    Next
    .ClearContents 'RAZ
End With
End Sub
Avec la RAZ en fin de traitement il n'y a pas de problème si l'on exécute le code 2 fois de suite.

Nota : en D47 il est plus simple d'écrire =SOMME(Janvier: Décembre!G5) à condition que les feuilles des mois se suivent dans l'ordre.

A+
 

Pièces jointes

Comme il y a des formules qui se recalculent en "Total reste" les Application.Calculation feront gagner du temps :
VB:
Sub Addition()
Dim c As Range
Application.Calculation = xlCalculationManual
With [B47:B72,B77:B86,I47:I72,I77:I86,P47:P72,P77:P86,W47:W72,W77:W86]
    For Each c In .Cells
        If IsNumeric(CStr(c)) And IsNumeric(c(1, 2)) Then c(1, 2) = c(1, 2) + c
    Next
    .ClearContents 'RAZ
End With
Application.Calculation = xlCalculationAutomatic
End Sub
 

Pièces jointes

- 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
7
Affichages
741
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
758
Retour