Somme.si, VBA et plages dynamiques

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

Vilain

XLDnaute Accro
Bonsoir à tous,

Je reviens une fois de plus avec un problème de plage dynamique en vba.
J'explique mon problème :
J'ai un onglet 1 et un onglet 2. Dans mon onglet 1, j'ai en colonne N ma clé unique. Je reprends cette clé unique en onglet 2 en ayant supprimé les doublons. J'ai dans mon onglet 1, dans la colonne P et dans les suivantes mes données. Je souhaite reprendre ces données dans mon onglet 2 dans les colonnes C et suivantes grâce à une formule : min(1;somme.si(liste clé unique de l'onglet 1; clé unique de la ligne; somme des données correspondantes)).
Je joins mon fichier dans sa structure exacte et avec la formule que je souhaite dans les colonnes C et D de mon onglet 2. Mon problème réside dans le fait que le nombre de données dans ma colonne de clés uniques varient grandement.

Merci d'avance pour votre précieuse aide.

Vilain
 

Pièces jointes

Re : Somme.si, VBA et plages dynamiques

Bonjour

Tu peux peut être faire en 2!C2 avec quelque chose du genre
Code:
=MIN(1;SOMME.SI(DECALER('1'!N$2;;;EQUIV(9^9;'1'!N:N;1));'2'!$A2;DECALER('1'!P$2;;;EQUIV(9^9;'1'!P:P;1))))
avec quelques $ en plus, si tu as bien des nombres dans les colonnes 1!N et 1!P.

@ plus
 
Re : Somme.si, VBA et plages dynamiques

Bonsoir Cisco,

Merci pour cette réponse rapide. L'idée est bonne mais j'essaie ne pas inclure ce genre de choses et de passer que par des solutions VBA (j'étais passé par l'intermédiaire des plages nommées en dynamiques dans un premier temps). Si je n'arrive pas à régler ce problème, j'essaierai qqch de ce genre.

Encore merci.

A plus
 
Re : Somme.si, VBA et plages dynamiques

Bonsoir @ tous,
le MIN() ne sert à rien ici, puisque l'on peut faire juste comme ça : =N(SOMME.SI('1'!$N$2:$N$7;$A2;'1'!P$2😛$7)>0)
le problème de l'ami Vilain est qu'il veut extraire les "Clés uniques" avec un code VBA et pas avec une formule, mais surement une âme charitable va passer par là pour lui donner de l'aide.


@ + +
 
Re : Somme.si, VBA et plages dynamiques

Re,

Merci Rachid pour ton aide.
Le problème ici c'est que ta formule ne tient compte que des 7 lignes remplies dans mon onglet 1. Parfois j'en aurai 1000, parfois 10000, parfois 100000 ! C'est la dessus que je bloque en fait...
 
Re : Somme.si, VBA et plages dynamiques

Re,
pour les formules on peut les appliquer sur toutes les colonnes, en C2 :
Code:
=N(SOMME.SI('1'!$N:$N;$A2;'1'!P:P)>0)
@ tirer vers le bas et vers la droite


Si quelqu'un parmi les VBAistes peut adapter l’événement Worksheet_Activate pour incrémenter les formules au fur et à mesure.


@ + +
 
Re : Somme.si, VBA et plages dynamiques

Bonjour,

Pour saluer R@chid et ses premiers essais de macro (je salue bien évidemment les autres au passage!), on peut faire "tout" dans la seule procédure Worksheet_Activate et donc se dispenser du bouton, avec le code suivant:
VB:
Sub SansDoublonsTrie()
  Dim temp()
  Set f1 = Sheets("1")
  Set f2 = Sheets("2")
  Set mondico = CreateObject("Scripting.Dictionary")
  a = Range(f1.[N2], f1.[N65000].End(xlUp)).Value
  For Each c In a
     mondico(c) = ""
  Next c
  derlig = f2.Cells(Rows.Count, 1).End(xlUp).Row 'n° ligne dernière cellule non-vide en colonne A
  Set dest = f2.Range("A2")
  dest.ClearContents
  f2.[A3].Resize(derlig - 2, 4).ClearContents '4, pcq 4 colonnes à effacer (sans effacer les formules en ligne 2)
  dest.Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
  dest.Resize(mondico.Count, 1).Sort Key1:=dest, Order1:=xlAscending
  [C2:D2].AutoFill ([C2].Resize(mondico.Count, 2)) 'recopier les formules de ligne 2 (sur 2 colonnes de large)
  Set mondico = Nothing    ' libère mondico
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
624
Retour