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

XL 2016 Problème VBA

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

  • Grille avec memoire.xlsm
    68 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Grille avec memoire.xlsm
    65.3 KB · Affichages: 1

vgendron

XLDnaute Barbatruc
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...
 

Hubert1959

XLDnaute Nouveau
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.
 

Hubert1959

XLDnaute Nouveau
voici mon souci
une image du problème en 3éme ligne normalement ça fonctionne
mais là ?
 

Pièces jointes

  • schéma 1.png
    27 KB · Affichages: 13

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Grille avec memoire (2).xlsm
    65.4 KB · Affichages: 1

Hubert1959

XLDnaute Nouveau
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:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…