Copier la somme des cellules sélectionnées dans le presse-papiers

Parfois, il faut beaucoup de temps pour arriver à certaines choses. Mais quand ils ont DÉJÀ été inventés, après coup ils semblent évidents et même banals. De la série "quoi, c'était possible?".

Depuis les toutes premières versions, la barre d'état en bas de la fenêtre Microsoft Excel affichait traditionnellement les totaux des cellules sélectionnées :

Copier la somme des cellules sélectionnées dans le presse-papiers

Si vous le souhaitez, il était même possible de cliquer avec le bouton droit sur ces résultats et de sélectionner dans le menu contextuel exactement les fonctions que nous voulons voir :

Copier la somme des cellules sélectionnées dans le presse-papiers

Et tout récemment, dans les dernières mises à jour d'Excel, les développeurs Microsoft ont ajouté une fonctionnalité simple mais ingénieuse : désormais, lorsque vous cliquez sur ces résultats, ils sont copiés dans le presse-papiers !

Copier la somme des cellules sélectionnées dans le presse-papiers

Beauté. 

Mais qu'en est-il de ceux qui n'ont pas encore (ou déjà ?) une telle version d'Excel ? C'est là que de simples macros peuvent aider.

Copier la somme des cellules sélectionnées dans le Presse-papiers à l'aide d'une macro

Ouvrir dans l'onglet promoteur (Développeur) éditeur Visual Basic ou utilisez ce raccourci clavier autre+F11. Insérer un nouveau module vide via le menu Insertion – Module et copiez-y le code suivant :

Sub SumSelected() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) .PutInClipboard End With End Sub  

Sa logique est simple :

  • Vient d'abord la "protection contre le fou" - nous vérifions exactement ce qui est mis en évidence. Si aucune cellule n'est sélectionnée (mais, par exemple, un graphique), quittez la macro.
  • Puis en utilisant la commande Obtenir un objet nous créons un nouvel objet de données où notre somme de cellules sélectionnées sera stockée plus tard. Un code alphanumérique long et incompréhensible est, en fait, un lien vers la branche de registre Windows où se trouve la bibliothèque Bibliothèque d'objets Microsoft Forms 2.0, qui peut créer de tels objets. Parfois, cette astuce est aussi appelée liaison tardive implicite. Si vous ne l'utilisez pas, vous devrez alors faire un lien vers cette bibliothèque dans le fichier via le menu Outils — Références.
  • La somme des cellules sélectionnées est considérée comme une commande WorksheetFunction.Sum(Sélection), puis le montant résultant est placé dans le presse-papiers avec la commande Placer dans le presse-papiers

Pour plus de facilité d'utilisation, vous pouvez bien entendu affecter cette macro à un raccourci clavier à l'aide du bouton Macros languette promoteur (Développeur — Macros).

Et si vous voulez voir exactement ce qui a été copié après l'exécution de la macro, vous pouvez activer le panneau Presse-papiers à l'aide de la petite flèche dans le coin inférieur droit du groupe correspondant sur La principale (Accueil) languette:

Copier la somme des cellules sélectionnées dans le presse-papiers

Non seulement le montant

Si, en plus du montant banal, vous voulez autre chose, vous pouvez utiliser n'importe laquelle des fonctions que l'objet nous offre Feuille de calculFonction:

Copier la somme des cellules sélectionnées dans le presse-papiers

Par exemple, il y a :

  • Somme – somme
  • Moyenne – moyenne arithmétique
  • Compter - nombre de cellules avec des nombres
  • CountA - nombre de cellules remplies
  • CountBlank - nombre de cellules vides
  • Min – valeur minimale
  • Max – valeur maximale
  • Médiane – médiane (valeur centrale)
  • ... etc.

Y compris les filtres et les lignes-colonnes masquées

Que se passe-t-il si des lignes ou des colonnes sont masquées (manuellement ou par un filtre) dans la plage sélectionnée ? Afin de ne pas les prendre en compte dans les totaux, nous devrons modifier légèrement notre code en ajoutant à l'objet Sélection propriété Cellules spéciales (xlCellTypeVisible):

Sub SumVisible() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCells(xlCellTypeVisible)) . PutInClipboard End With End Sub  

Dans ce cas, le calcul de toute fonction totale ne sera appliqué qu'aux cellules visibles.

Si vous avez besoin d'une formule vivante

Si vous rêvez, vous pouvez proposer des scénarios dans lesquels il est préférable de ne pas copier un nombre (constant), mais une formule vivante dans le tampon, qui calcule les totaux dont nous avons besoin pour les cellules sélectionnées. Dans ce cas, vous devrez coller la formule à partir de fragments, en y ajoutant la suppression des signes dollar et en remplaçant la virgule (qui sert de séparateur entre les adresses de plusieurs plages sélectionnées dans VBA) par un point-virgule :

Sub SumFormula() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Replace(Selection. Adresse, ",", ";"), "$", "") & ")" .PutInClipboard End With End Sub  

Sommation avec conditions supplémentaires

Et, enfin, pour les complètement maniaques, vous pouvez écrire une macro qui résumera non pas toutes les cellules sélectionnées, mais uniquement celles qui satisfont aux conditions données. Ainsi, par exemple, une macro ressemblera à celle qui place la somme des cellules sélectionnées dans le tampon, si leurs valeurs sont supérieures à 5 et en même temps elles sont remplies de n'importe quelle couleur :

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Then Exit Sub For Each cell In Selection If cell.Value > 5 And cell.Interior.ColorIndex <> xlNone Then If myRange Is Nothing Then Set myRange = cell Else Set myRange = Union(myRange, cell) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClipboard End With End Sub  

Comme vous pouvez facilement l'imaginer, les conditions peuvent être définies dans n'importe quel format - jusqu'aux formats de cellule - et dans n'importe quelle quantité (y compris en les reliant avec des opérateurs logiques ou ou et). Il y a beaucoup de place pour l'imagination.

  • Convertir des formules en valeurs (6 façons)
  • Que sont les macros, comment les utiliser, où insérer le code Visual Basic
  • Informations utiles dans la barre d'état de Microsoft Excel

Soyez sympa! Laissez un commentaire