Correction de fonction
Zarzis
-
Zarzis -
Zarzis -
Bonjour à tous,
J'ai créé une fonction qui permet de compter le nombre de couleurs différentes dans une plage. Mais le code en dessous ça ne fonctionne pas. Vous pouvez m'aider pour le corrigé.
Merci d'avance,
EDIT : Ajout des balises de code
J'ai créé une fonction qui permet de compter le nombre de couleurs différentes dans une plage. Mais le code en dessous ça ne fonctionne pas. Vous pouvez m'aider pour le corrigé.
Merci d'avance,
Public Function NB_Couleurs(Cell As Ranges) As Integer Dim colec As New Collection Application.Volatile On Error Resume Next colec.Add Cell.Interior.ColorIndex, CStr(Cell.Interior.ColorIndex) NB_Couleurs = colec.Count - 1 End Function>
EDIT : Ajout des balises de code
Configuration: Windows / Internet Explorer 11.0
A voir également:
- Correction de fonction
- Fonction si et - Guide
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Activer correction automatique android - Guide
- Telecharger clavier français avec correction - Télécharger - Divers Utilitaires
- Le correcteur automatique de votre smartphone vous rend fou ? Voici comment le désactiver - Accueil - Mobile
4 réponses
Bonjour,
Pour commencer, merci à l'avenir d'utiliser les balises de code pour poster ton code sur le forum
explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, dans ta fonction tu passes en parametre
Range au plurièl ? Que lui envoies tu au juste ... une seule plage de cellules ou plusieurs voir même.. une seule cellule ??
Car si tu ne passes qu'une seule cellule... c'est RANGE au singulier qu'il faut utiliser.
Sans compter que si ta plage contenait plusieurs cellules.. il faudrait boucler dessus...
Et pour finir.. pourquoi faire un -1 pour ton calcul ??
Pour commencer, merci à l'avenir d'utiliser les balises de code pour poster ton code sur le forum
explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite, dans ta fonction tu passes en parametre
(Cell As Ranges)
Range au plurièl ? Que lui envoies tu au juste ... une seule plage de cellules ou plusieurs voir même.. une seule cellule ??
Car si tu ne passes qu'une seule cellule... c'est RANGE au singulier qu'il faut utiliser.
Sans compter que si ta plage contenait plusieurs cellules.. il faudrait boucler dessus...
Et pour finir.. pourquoi faire un -1 pour ton calcul ??
Bonjour,
Tu as l'embarras du choix:
http://www.xavierdupre.fr/blog/2013-01-26_nojs.html
https://www.formuleexcel.com/compter-les-cellules-selon-leur-couleur-sur-excel/
https://www.commentcamarche.net/faq/46274-vba-excel-nombre-de-cellules-selon-leur-couleur
Tu as l'embarras du choix:
http://www.xavierdupre.fr/blog/2013-01-26_nojs.html
https://www.formuleexcel.com/compter-les-cellules-selon-leur-couleur-sur-excel/
https://www.commentcamarche.net/faq/46274-vba-excel-nombre-de-cellules-selon-leur-couleur
Bonjour,
Tel que décrit par mes prédécesseurs, la signature de la méthode est douteuse.
Utiliser un mot qui ressemble à un mot réservé est périlleux.
Cell ~ Cells
Le mot Cells est un mot réservé à ne jamais utiliser comme nom de variable.
Le mot Cell ... pas vraiment une bonne idée.
Jordane à spécifié l'erreur de Ranges au lieu de Range.
Une définition comme suit serait préférable :
note : Cellules est au pluriel car il pourrait y avoir plus d'une cellule
Exemple :
K
Tel que décrit par mes prédécesseurs, la signature de la méthode est douteuse.
Public Function NB_Couleurs(Cell As Ranges) As Integer
Utiliser un mot qui ressemble à un mot réservé est périlleux.
Cell ~ Cells
Le mot Cells est un mot réservé à ne jamais utiliser comme nom de variable.
Le mot Cell ... pas vraiment une bonne idée.
Jordane à spécifié l'erreur de Ranges au lieu de Range.
Une définition comme suit serait préférable :
Public Function NB_Couleurs(ByVal Cellules As Range) As Integer
note : Cellules est au pluriel car il pourrait y avoir plus d'une cellule
Exemple :
Option Explicit ' Public Sub Test() Dim Target As Range Dim Retour As Integer Set Target = Range("A1:D10") Retour = NB_Couleurs(Target) MsgBox Retour End Sub ' Public Function NB_Couleurs(ByVal Cellules As Range) As Integer Dim colec As New Collection Dim Cible As Range Application.Volatile On Error Resume Next For Each Cible In Cellules colec.Add Item:=Cible.Interior.ColorIndex, Key:=CStr(Cible.Interior.ColorIndex) Next Cible NB_Couleurs = colec.Count - 1 End Function
K