Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

  • Initiateur de la discussion Initiateur de la discussion christophe d
  • 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 !

C

christophe d

Guest
Bonjour à tous,

Mon problème est le suivant, dans mon fichier je fais la somme des références présente dans un tableau.
je fais cela dans deux onglet, je voudrais pour deux des intitulé, que la somme se fasse dans un seul onglet car elles sont communes au deux.

pour faire la somme des références j'utilise des fonctions matricielles.

merci à vous

Christophe D
 

Pièces jointes

Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

Bonjour christophe d,

En feuille 'Com ref L1' il s'agit bien de la colonne AG donc entrez en AG4 :

Code:
=SOMME.SI(INTER;AF4;N$4:N$38)+SOMME.SI('com ref L2'!inter;AF4;'com ref L2'!P$4:P$38)
Attention, dans les feuilles les valeurs ont plus d'une décimale...

A+
 
Dernière édition:
Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

Re,

Maintenant vous voulez peut-être lister en colonne F, sans doublon, les "INTER" des 2 feuilles.

Alors le plus simple est d'utiliser cette macro, à placer dans ThisWorkbook :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim d As Object, c As Range
Set d = CreateObject("Scripting.Dictionary")
For Each c In Sheets("Com ref L1 ").[INTER]
  If c <> "" Then d(UCase(c)) = ""
Next
For Each c In Sheets("com ref L2").[INTER]
  If c <> "" Then d(UCase(c)) = ""
Next
If d.Count Then
  Application.EnableEvents = False
  Sheets("Com ref L1 ").[AF4].Resize(d.Count) = Application.Transpose(d.keys)
  Application.EnableEvents = True
End If
End Sub
Elle se lance quand on modifie ou valide une cellule quelconque du classeur.

Attention il y a un espace à la fin du nom de la feuille 'Com ref L1 '

A+
 
Dernière édition:
Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

bonjour JOB 75

Oui ,la cellule est AG est pour les palettes AK, la formule marche .
par contre pour la macro, je ni connait rien du tout. pourrais-tu m'expliquer la démarche a suivre pour l'installer.

je n'ai besoin de la macro que pour les inter, pour les palettes la formule me suffit car il n'existe que les 3 références qui sont sur le tableau.

Christophe D
 
Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

Pour JOB75

Je viens de tester les palettes, il faudra les inclurent dans la macro,car si une référence n'est pas utilise dans le 1 er onglet il n'affiche pas les besoins du 2 onglet

Christophe D
 
Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

Je viens de faire une petite recherche sur le forum et j'ai trouvé une discussion que tu as eus avec "SOLENEB" j'ai suivi le déroulement , mais a la fin j'ai un message d'erreur qui est le suivant

"erreur de compilation"
"end sub attendu " est ce que cela te dit quelque chose?

Christophe D
 
Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

Re,

Bien noter que je viens de modifier la macro du post #3.

Par ailleurs si l'on supprime toute une référence dans les "INTER" la liste diminue, il faut effacer le bas de la colonne AG.

Donc utiliser dans ThisWorkbook :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim d As Object, r As Range
Set d = CreateObject("Scripting.Dictionary")
For Each r In Sheets("Com ref L1 ").[INTER]
  If r <> "" Then d(UCase(r)) = ""
Next
For Each r In Sheets("Com ref L2").[INTER]
  If r <> "" Then d(UCase(r)) = ""
Next
Application.EnableEvents = False
With Sheets("Com ref L1 ")
  If d.Count Then _
    .[AF4].Resize(d.Count) = Application.Transpose(d.keys)
  Set r = .Range(.[AF4].Offset(d.Count), .Range("AF" & .Rows.Count))
  Set r = Intersect(r, .[AF4].CurrentRegion)
  If Not r Is Nothing Then r.ClearContents 'effacement sous la liste
End With
Application.EnableEvents = True
End Sub
A+
 
Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

Rien à faire il le marque :
les macros de ce projet sont désactivées.
j'ai regarder sur internet j'ai suivi tout ce qui est marquer :
er cas : au moment de l'ouverture du fichier, Excel affiche un message au-dessus des 1res cellules : "Avertissement de sécurité : Du contenu actif a été désactivé." avec le bouton Options. Cliquer sur ce dernier et cocher la case Activer ce contenu.

2e cas : Le message ci-dessus n'apparaît pas.
a) Cliquer sur la bulle Office (en haut à gauche)
b) Cliquer sur Option Excel (en bas à droite de la liste déroulante)
c) Dans la partie Centre de gestion de la confidentialité, cliquer sur le bouton Paramètres du Centre de gestion de la confidentialité...
d) Dans Paramètre des macros, cocher l'option que vous souhaitez selon les cas. Dans le mien, c'est Activer toutes les macros. rien ne marche
???
Que faire d'autres?

Christophe D
 
Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

Re,

Si l'on veut aussi la liste des "PALETTE" en colonne AJ mettre dans ThisWorkbook :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim d As Object, r As Range
Application.EnableEvents = False
With Sheets("Com ref L1 ")
  Set d = CreateObject("Scripting.Dictionary")
  For Each r In .[INTER]
    If r <> "" Then d(UCase(r)) = ""
  Next
  For Each r In Sheets("Com ref L2").[INTER]
    If r <> "" Then d(UCase(r)) = ""
  Next
  If d.Count Then _
    .[AF4].Resize(d.Count) = Application.Transpose(d.keys)
  Set r = .Range(.[AF4].Offset(d.Count), .Range("AF" & .Rows.Count))
  Set r = Intersect(r, .[AF4].CurrentRegion)
  If Not r Is Nothing Then r.ClearContents 'effacement sous la liste
  d.RemoveAll 'RAZ
  For Each r In .[PALETTE]
    If r <> "" Then d(UCase(r)) = ""
  Next
  For Each r In Sheets("Com ref L2").[PALETTE]
    If r <> "" Then d(UCase(r)) = ""
  Next
  If d.Count Then _
    .[AJ4].Resize(d.Count) = Application.Transpose(d.keys)
  Set r = .Range(.[AJ4].Offset(d.Count), .Range("AJ" & .Rows.Count))
  Set r = Intersect(r, .[AJ4].CurrentRegion)
  If Not r Is Nothing Then r.ClearContents 'effacement sous la liste
End With
Application.EnableEvents = True
End Sub
Vous allez bien sûr arriver tout seul à activer les macros 🙂

A+
 
Re : Comment faire une somme de deux colonnes qui utilisent une fonction matricielle

Enfin j'ai trouvé ,il fallait que j'installe "complément solver" dans excel

la macro marche

merci
lundi, je vais l'installer sur le fichier source, si j'ai un problème, je reviendrais vers toi.

bon weekend

Christophe D
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour