XL 2016 Problème VBA

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 !

Hubert1959

XLDnaute Nouveau
Bonjour,
J'essaye de faire la somme de chaque ligne en VBA dans la colonne AH
Visiblement ça fonctionne pas, j'ai toujours une erreur
ou placer correctement cette ligne dans le VBA ?
Visiblement le VBA est compliqué pour moi, mais je ne renonce pas.

Merci d'avance si une personne est plus qualifier pour m'aider sur mon sujet

Philippe
 

Pièces jointes

Solution
Merci beaucoup pour cette aide précieuse.

De mon côté j’avais repris depuis le début toutes les propositions et j’avais mal placer les lignes au bonne endroit.

Et ce matin j’ai enfin réussi (bon je suis un débutant) je bricole !

J’ai regardé le dernier fichier que tu m’as envoyé c’est exactement ce que je cherchais a faire.

De mon côté je t’envoie pour info.

Désolé pour tout ce dérangement (je n’avais pas tout compris dès le début)

Débutant je suis.
Merci beaucoup


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Ligne = Target.Row 'ligne de la cellule modifiée
Set Zone = Range("D" & Ligne).Resize(1, 30) 'Colonne D à AG de la ligne

Range("AH" & Ligne) = WorksheetFunction.Sum(Zone)...
Bonjour Hubert,
Quelle erreur avez vous ?
Dans la PJ la macro est exécutée par appui sur le bouton sans erreur générée.
Attention cependant, quand vous écrivez le résultat en AH5 vous exécutez aussi la macro Worksheet_Change.
Ce qui ici ne pose pas de problème mais il faut rester attentif à ce point. ( ou alors invalider cette macro avec des EnableEvents = False )
 

Pièces jointes

bonjour

pas bien compris ce que tu voulais faire..
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Ligne = Target.Row 'ligne de la cellule modifiée
Set Zone = Range("D" & Ligne).Resize(1, 30) 'Colonne D à AG de la ligne

Range("AH" & Ligne) = WorksheetFunction.Sum(Zone)
Application.EnableEvents = True
End Sub

sinon.. il y a des formules... en AH5
=somme(D5:AG5)

et tu tires vers le bas...
 
bonjour

pas bien compris ce que tu voulais faire..
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Ligne = Target.Row 'ligne de la cellule modifiée
Set Zone = Range("D" & Ligne).Resize(1, 30) 'Colonne D à AG de la ligne

Range("AH" & Ligne) = WorksheetFunction.Sum(Zone)
Application.EnableEvents = True
End Sub

sinon.. il y a des formules... en AH5
=somme(D5:AG5)

et tu tires vers le bas...
Je voulais simplement introduire ma formule dans mon VBA existant
Sub TestFonction()
Range("AH5") = Application.WorksheetFunction.Sum(Range("D5:AG5"))
End Sub
visiblement ça fonctionne mal
cette formule me permet d'avoir un résultat par ligne (cellule en jaune)
tires vers le bas ne fonctionne pas aussi.
 
Je voulais simplement introduire ma formule dans mon VBA existant
Sub TestFonction()
Range("AH5") = Application.WorksheetFunction.Sum(Range("D5:AG5"))
End Sub
visiblement ça fonctionne mal
cette formule me permet d'avoir un résultat par ligne (cellule en jaune)
tires vers le bas ne fonctionne pas aussi.
voici mon souci
une image du problème en 3éme ligne normalement ça fonctionne
mais là ?
 

Pièces jointes

  • schéma 1.png
    schéma 1.png
    27 KB · Affichages: 13
Re,
Alors dans ce cas, du tout cuit en PJ avec :
VB:
Sub FaireSomme()
    Dim Formule$
    Formule = "=IF(B5="""","""",SUM(D5:AG5))"
    Application.EnableEvents = False
    Range("AH5:AH35").Formula = Formule
    Range("AH5:AH35") = Range("AH5:AH35").Value
    Application.EnableEvents = True
End Sub
et la modif dans Worksheet_Change en rajoutant FaireSomme pour mettre à jour les lignes.
 

Pièces jointes

Merci beaucoup pour cette aide précieuse.

De mon côté j’avais repris depuis le début toutes les propositions et j’avais mal placer les lignes au bonne endroit.

Et ce matin j’ai enfin réussi (bon je suis un débutant) je bricole !

J’ai regardé le dernier fichier que tu m’as envoyé c’est exactement ce que je cherchais a faire.

De mon côté je t’envoie pour info.

Désolé pour tout ce dérangement (je n’avais pas tout compris dès le début)

Débutant je suis.
Merci beaucoup


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Ligne = Target.Row 'ligne de la cellule modifiée
Set Zone = Range("D" & Ligne).Resize(1, 30) 'Colonne D à AG de la ligne

Range("AH" & Ligne) = WorksheetFunction.Sum(Zone)
Application.EnableEvents = True

With Sheets("Mémoire")
    .Cells(Application.Match([A5], .[A:A], 0), 2).Resize(31, 33) = [B5:AH35].Value 'copie les valeurs
End With
'Columns.AutoFit 'ajustement largeurs
End Sub

Private Sub Worksheet_Calculate()
Application.EnableEvents = False 'désactive les évènements
With Sheets("Mémoire")
    [B5:AH35] = .Cells(Application.Match([A5], .[A:A], 0), 2).Resize(31, 33).Value 'copie les valeurs
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
 
Dernière modification par un modérateur:
- 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
2
Affichages
49
  • Question Question
Réponses
7
Affichages
119
Réponses
3
Affichages
81
Réponses
18
Affichages
788
Réponses
4
Affichages
479
Réponses
7
Affichages
164
Retour