XL 2010 Fonction qui devrait retourner un nombre - incompatibilité de type

glamlife

XLDnaute Nouveau
Bonjour à tous ! !

Je viens chercher vos lumières. :D

J'avais une fonction, très simple, qui me permettait de trouver la colonne à utiliser en fonction du contenu d'une Cellule.

Elle est appelé dans ce code :

Code:
Sub mise_a_jour()

Dim reponse As Variant

Application.ScreenUpdating = False

'Affiche un message d'alerte si la mise à jour de l'unité choisie a déjà été faite aujourd'hui
If Day(Sheets("MAJ").Cells(25, determination_col_maj).Value) = Day(Now()) And Month(Sheets("MAJ").Cells(25, determination_col_maj).Value) = Month(Now()) Then
    reponse = MsgBox("La mise à jour à déjà été réalisée aujourd'hui pour cette unité. Voulez vous la relancer ?", vbYesNo + vbDefaultButton2)
    If reponse = 7 Then
        End
    End If
End If
...

Voici la fonction initiale, qui fonctionne très bien :

Code:
Function determination_col_maj() As Long

	'Détermination de la colonne sur laquelle inscrire les informations de mise à jour
	UniteChoisie = Sheets("MAJ").Cells(10, 6).Value

	If UniteChoisie <> "DNC1" And UniteChoisie <> "DNC4" Then
		MsgBox ("L'unité choisie est incorrecte !")
		End
	End If

	If UniteChoisie = "DNC1" Then
		determination_col_maj = 4
	End If
	If UniteChoisie = "DNC4" Then
		determination_col_maj = 8
	End If

End Function

J'ai voulu modifier cette fonction avec un un 3ème choix :cool: :

Code:
Function determination_col_maj()  'As Long

	'Détermination de la colonne sur laquelle inscrire les informations de mise à jour
	UniteChoisie = Sheets("MAJ").Cells(10, 6).Value

	If UniteChoisie <> "DNC1" And UniteChoisie <> "DNC4" And UniteChoisie <> "DNK" Then
		MsgBox ("L'unité choisie est incorrecte !")
		End
	End If

	Select Case UniteChoisie
		Case "DNC1"
			determination_col_maj = 4
		Case "DNC4"
			determination_col_maj = 8
		Case "DNK"
			determination_col_maj = 12
	End Select

End Function

Seulement voilà, cela ne fonctionne pas du tout, j'ai une incompatibilité de type (erreur 13), et ce, sur la variable "determination_col_maj" quand on lui affecte 12.

J'ai fait un peu de recherche, et c'est le 12 le problème, car tout fonctionne, de 1 à 10 inclu, mais 11 / 12 et plus, ce n'est pas envisageable.

J'ai aussi essayé de passer la fonction en :
Code:
Function determination_col_maj() As Long
Mais rien n'y fait !


Je sèche ! :(

Je viens voir les experts ! ! ;)

Merci d'avance,

Glam
 

Papou-net

XLDnaute Barbatruc
Re : Fonction qui devrait retourner un nombre - incompatibilité de type

Bonjour glamlife, et bienvenue sur XLD,

Voici ta fonction réécrite:

Code:
Function determination_col_maj(Unite As String)

    Select Case Unite
        Case "DNC1"
            determination_col_maj = 4
        Case "DNC4"
            determination_col_maj = 8
        Case "DNK"
            determination_col_maj = 12
        Case Else
        MsgBox ("L'unité choisie est incorrecte !")
    End Select

End Function
Ci-joint un fichier exemple.

A +

Cordialement.

PS: tu dois spécifier l'adresse de la cellule dans l'appel à la fonction (paramètre Unite ---> F10 dans l'exemple)
 

Pièces jointes

  • Exemple glamlife.xlsm
    14.8 KB · Affichages: 31
Dernière édition:

glamlife

XLDnaute Nouveau
Re : Fonction qui devrait retourner un nombre - incompatibilité de type

Bonjour à tous !

Je dois vous remercier pour l'engouement dont vous faites preuve !

La simplification avec le select case que j'avais initié, tu l'as terminée Papou, et c'est plutôt bien vu !

En revanche, je n'avais pas de paramètre dans cette fonction, elle retourne un nombre, l'indice de la colonne (c'est pour cette raison que je lui avais mis un petit "as long" à la suite, j'au aussi essayé avec byte, variant...

J'ai refais un test avec le code simplifié, avec l'unité en paramètre, et sans paramètre, avec le "As long" et sans, et ça ne fonctionne toujours pas.

Vu que je ne vois pas pourquoi, et que vous me dites que ça fonctionne chez vous, je me dit que nous faisons face à un sérieux problème d'ICC (Interface Chaise Clavier)

J'ai essayé de refaire une compilation, mais j'ai pas trop d'idée :(

Pour le moment, j'ai mis 10, et je vais faire un lien vers les cellules que je mets à jour.

Je vais essayer de faire un fichier simplifier (sans les données qui sont un peu confidentielles quand même)

Glam
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 883
Membres
103 981
dernier inscrit
vinsalcatraz