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

Microsoft 365 "Dépassement de capacité"

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

rafi93

XLDnaute Occasionnel
bonjour à tous

sur une feuille contenant un tableau, j'ai une macro VBA qui se contente d'afficher toutes les colonnes, au cas où certaines seraient masquées, qui fonctionne parfaitement,
Sub Col_Affiche_tout()
Cells.Select
Selection.EntireColumn.Hidden = False
Range("A1").Select
End Sub

sur les cellules d'une colonne du tableau, j'ai rajouté une combobox toute simple pour sélectionner des items dans une liste
depuis, quand je lance la macro Col_Affiche_tout() j'ai un message d'erreur "Dépassement de capacité"
pourquoi ?
y a t il une solution ?

merci !
 
Merci Pierrejean !
c'était bien ça
mais pour que je puisse aller pêcher tout seul : quelle est l'explication ?
car je m'y perds toujours dans les multiples façon d'écrire la même chose en VB
 
Bonjour,
Hello @pierrejean 🙂
A tout hasard, il n'y aurait pas un code genre :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
End Sub
Si c'est le cas, il faut remplacer Count par CountLarge (mais c'est rarement le cas de devoir sélectionner toutes les cellules...
Bonne fin d'apm
 
Bonjour,

C'est effectivement le Target.Count qui sature quand on sélectionne toutes les cellules (il y en a 2 ^ 34)
car c'est plus que la limite du Long, et .Count ramène un Long.

C'est en fait très facile de sélectionner toutes les cellules, même si on ne le veut pas : il suffit de cliquer sur le petit carré en haut à gauche des en-têtes (au-dessus du 1 et à gauche du A)

Plusieurs solutions :
1) utiliser .CountLarge (mais probablement pas disponible avec les anciennes versions) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
End Sub
2) décomposer les lignes et les colonnes
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.rows.Count > 1 Then Exit Sub
If Target.columns.Count > 1 Then Exit Sub
End Sub
3) multiplier les nombres de lignes et de colonnes après conversion en Double
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If CDbl(Target.rows.Count) * Target.columns.Count > 1 Then Exit Sub
End Sub
 
Bonsoir à tous,

Une fonction CellsCount qui prend en compte les Range à plusieurs zones:
VB:
Function CellsCount(xrg As Range)
Dim xa, x As Currency
   For Each xa In xrg.Areas: x = x + xa.Rows.Count * xa.Columns.Count: Next
   CellsCount = x
End Function
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…