A voir également:
- Types vba
- Types de souris informatique - Guide
- Les types de ram - Guide
- Excel compter cellule couleur sans vba - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
7 réponses
seuls les types définis par l'utilisateur et qui sont définis dans les modules d'objets publics peuvent êtres convertis depuis ou vers un variant
C'est précisément ce qu'évite la déclaration du vrai type dans la définition de la fonction, comme je le propose dans mon message 2. As-tu essayé ?
C'est précisément ce qu'évite la déclaration du vrai type dans la définition de la fonction, comme je le propose dans mon message 2. As-tu essayé ?
Utilisateur anonyme
30 avril 2009 à 13:23
30 avril 2009 à 13:23
Bonjour,
Quelques observations :
Votre code de départ :
Voici deux façon de faire :
et enfin :
Lupin
Quelques observations :
Votre code de départ :
Option Explicit Type Ville Nom As String Code_postal As Integer End Type ' Ici la variable Region est de type public Public Region(3) As Ville Sub Principale() Region(0).Nom = "Lupin" Region(0).Code_postal = "12345" ' Alors pourquoi la passer en paramètre ' puisqu'elle est connue de tout le projet [Public] Call Secondaire(Region) End Sub Sub Secondaire(ByRef Region As Ville) Region(1).Nom = "Zahara" Region(1).Code_postal = "54321" End Sub '
Voici deux façon de faire :
Option Explicit Type Ville Nom As String Code_postal As Integer End Type ' Ici la variable Region est de type public Public Region(3) As Ville Sub Principale() Region(0).Nom = "Lupin" Region(0).Code_postal = "12345" ' Puisque Region est public, elle est ' connue de Secondaire Call Secondaire MsgBox Region(0).Nom & vbLf & Region(1).Nom End Sub Sub Secondaire() MsgBox "Secondaire" Region(1).Nom = "Zahara" Region(1).Code_postal = "54321" End Sub '
et enfin :
Option Explicit Type Ville Nom As String Code_postal As Integer End Type ' Sub Principale() Dim Region(3) As Ville Region(0).Nom = "Lupin" Region(0).Code_postal = "12345" ' Ici la variable Region est inconnu ' de secondaire, il est donc obligatoire ' de la passer en paramètre. Call Secondaire(Region) End Sub ' Sub Secondaire(ByRef Region As Ville) Region(1).Nom = "Zahara" Region(1).Code_postal = "54321" End Sub '
Lupin
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
30 avril 2009 à 10:27
30 avril 2009 à 10:27
Bonjour,
Où est le problème ? Quel code d'erreur et sur quelle ligne de code ?
Les procédures sont-elles dans le même module ou dans des modules différents ?
D'autre part, si tu veux que ton code postal soit sur 5 caractères, déclare le en String. Si ça n'a pas d'importance, déclare le en Long, mais pas en Integer...
;o)
Où est le problème ? Quel code d'erreur et sur quelle ligne de code ?
Les procédures sont-elles dans le même module ou dans des modules différents ?
D'autre part, si tu veux que ton code postal soit sur 5 caractères, déclare le en String. Si ça n'a pas d'importance, déclare le en Long, mais pas en Integer...
;o)
Bonjour
Si tu donnais le type complet du paramètre de secondaire(ByRef region() As ville), au lieu de ta déclaration qui le transforme en variant ?
Ça dépend aussi du type de module dans lequel se trouve ton code.
Si tu donnais le type complet du paramètre de secondaire(ByRef region() As ville), au lieu de ta déclaration qui le transforme en variant ?
Ça dépend aussi du type de module dans lequel se trouve ton code.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour à tous,
d'abord merci pour vos réponses,
Mes procédures sont dans des modules différents,
quand je cherche à compiler, j'obtiens le message suivant :
"Erreur de compilation,
seuls les types définis par l'utilisateur et qui sont définis dans les modules d'objets publics peuvent êtres convertis depuis ou vers un variant, ou passés à des fonctions à liaison tardive."
Ce message est affiché quand le programme appelle la seconde routine (call secondaire(region) )
J'avais mis ville et code postal à titre illustratif comme je travaille sur des données financières un peu ch**, mais merci pour le conseil ;-)
En espérant que qqn saura m'aider, pour ne pas être bloquée dans mon développement j'ai directement défini des tableaux dans le type de la variable
nom(3) as string
code_postal(3) as long
mais c'est loin d'être optimal :-(
d'abord merci pour vos réponses,
Mes procédures sont dans des modules différents,
quand je cherche à compiler, j'obtiens le message suivant :
"Erreur de compilation,
seuls les types définis par l'utilisateur et qui sont définis dans les modules d'objets publics peuvent êtres convertis depuis ou vers un variant, ou passés à des fonctions à liaison tardive."
Ce message est affiché quand le programme appelle la seconde routine (call secondaire(region) )
J'avais mis ville et code postal à titre illustratif comme je travaille sur des données financières un peu ch**, mais merci pour le conseil ;-)
En espérant que qqn saura m'aider, pour ne pas être bloquée dans mon développement j'ai directement défini des tableaux dans le type de la variable
nom(3) as string
code_postal(3) as long
mais c'est loin d'être optimal :-(
Utilisateur anonyme
30 avril 2009 à 13:23
30 avril 2009 à 13:23
Bonjour,
Quelques observations :
Votre code de départ :
Voici deux façon de faire :
et enfin :
Lupin
Quelques observations :
Votre code de départ :
Option Explicit Type Ville Nom As String Code_postal As Integer End Type ' Ici la variable Region est de type public Public Region(3) As Ville Sub Principale() Region(0).Nom = "Lupin" Region(0).Code_postal = "12345" ' Alors pourquoi la passer en paramètre ' puisqu'elle est connue de tout le projet [Public] Call Secondaire(Region) End Sub Sub Secondaire(ByRef Region As Ville) Region(1).Nom = "Zahara" Region(1).Code_postal = "54321" End Sub '
Voici deux façon de faire :
Option Explicit Type Ville Nom As String Code_postal As Integer End Type ' Ici la variable Region est de type public Public Region(3) As Ville Sub Principale() Region(0).Nom = "Lupin" Region(0).Code_postal = "12345" ' Puisque Region est public, elle est ' connue de Secondaire Call Secondaire MsgBox Region(0).Nom & vbLf & Region(1).Nom End Sub Sub Secondaire() MsgBox "Secondaire" Region(1).Nom = "Zahara" Region(1).Code_postal = "54321" End Sub '
et enfin :
Option Explicit Type Ville Nom As String Code_postal As Integer End Type ' Sub Principale() Dim Region(3) As Ville Region(0).Nom = "Lupin" Region(0).Code_postal = "12345" ' Ici la variable Region est inconnu ' de secondaire, il est donc obligatoire ' de la passer en paramètre. Call Secondaire(Region) End Sub ' Sub Secondaire(ByRef Region As Ville) Region(1).Nom = "Zahara" Region(1).Code_postal = "54321" End Sub '
Lupin