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

Demande d'aide pour déclaration de variable

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 !

libellule85

XLDnaute Accro
Bonjour le forum, 🙂

Etant vraiment nul en déclaration de variable, j'ai besoin de vous pour m'aider à déclarer deux variables (le n et le i) dans la macro ci-dessous :

Code:
Sub imprimeSansCouleur(ByVal control As IRibbonControl)
  Dim temp1(), temp2()
  Dim c As Action
  
  For Each c In ActiveSheet.UsedRange
    If c.Interior.ColorIndex <> xlNone Then
       n = n + 1
       ReDim Preserve temp1(1 To n)
       ReDim Preserve temp2(1 To n)
       temp1(n) = c.Address
       temp2(n) = c.Interior.ColorIndex
       c.Interior.ColorIndex = xlNone
    End If
  Next c
  ActiveSheet.PrintPreview   ' ou ActiveSheet.PrintOut
  For i = 1 To n
    Range(temp1(i)).Interior.ColorIndex = temp2(i)
  Next i
End Sub

D'avance je vous remercie pour vos réponses
 
Re : Demande d'aide pour déclaration de variable

Bonjour Libellule85

Etant donné que le n et le i evoluent en fonction du nombre de cellules utilisées
Il faut déclarer tes variables en Long

Code:
Dim N as Long, I as Long

A+
 
Re : Demande d'aide pour déclaration de variable

Bonjour
l'idée c'est déclarer les variables pour minimiser la place qu'elles prennent en mémoire.
Si tu écris juste
dim i
excel sous entend
dim i as variant
dans ce cas, même si i change d'état au cours de la macro, ça fonctionne.
C'est la méthode des flemmards
si tu déclares toutes tes variables sans préciser leur type, autant supprimer option explicit en début de module et ne rien déclarer 🙂

Tu as tout à fait raison de vuloir préciser le type.
En fait tout dépend de la valeur maxi que vont prendre i et n dans ton cas
Si tu sais que tu auras par exemple au maximum 1000 itérations, tu les déclares comme integer. Si tu t'attends à traiter toutes les lignes d'un énorme tableau, tu les déclares comme long.
Si tu les déclares comme integer et que tu as un message "dépassement de capacité", déclare les comme variant. Si ça fait disparaitre le message d'alerte alors tu as identifié le pb et tu les déclares comme long. Si ça ne le fait pas diparaitre c'est que c'est une autre variable qui est mal dimensionnée.
 
Re : Demande d'aide pour déclaration de variable

Bonjour M45,

Merci beaucoup pour ta réponse et ton explication.

Je ne comprends pas avant cette macro fonctionnait impeccablement et maintenant quand je clique sur le bouton celà me met erreur 13 incompatibilité de type et le débogueur stabilote en jaune la ligne :

Code:
 For Each c In ActiveSheet.UsedRange
 
Re : Demande d'aide pour déclaration de variable

Bonjour
là encore déclare c as variant et tu vas voir que ton problème se résous...
C n'est pas une action mais une cellule donc un range
dim c as range
 
- 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
712
Réponses
8
Affichages
652
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
218
Réponses
4
Affichages
581
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…