je veux faire fonction qui separe une chaine de char en deux [vb(a)] - VB/VBA/VBS - Programmation
Marsh Posté le 25-04-2003 à 13:25:25
euh skoi la question?
comment tu prévois de renvoyer 2 chaînes?
Marsh Posté le 25-04-2003 à 13:44:23
ben ouais ma question est comment je renvoie les deux chaines ... un tableau mais comment je fais un tableau ???
Bon j'ai vu qu'il y avais certaines erreurs dans les variables mais bon ... c'est pas le plus important.
Marsh Posté le 25-04-2003 à 13:49:49
ben ya plus simple: tu passes deux variables string par référence et tu récupères leur contenu après appel:
Code :
|
voilà, ça fait 4 lignes et ça plante pas, même si la chaîne est vide
edit: j'ajoute que si tu spécifies pas ByVal ou ByRef, c'est ByRef qui est pris par défaut (en .NET ce sera ByVal).
Marsh Posté le 25-04-2003 à 14:32:24
oki ca marche peut etre mais ...
ce que je veux faire c'est:
j'ai essayé ta methode en faisant :
Code :
|
puis :
Code :
|
pour info : quand je fais l'appel de la fonction je fais :
Code :
|
et là il me dit "Attendu '=' "
comprend po
Marsh Posté le 25-04-2003 à 15:07:54
J'ai trouvé... il suffit de faire Call pour appeler la fonction ...
Et le types ne sont pas string mais textbox...
Voila mici a toi
Marsh Posté le 25-04-2003 à 15:16:32
bon un truc pour alléger un peu ton code: utilise les chiffres comme. Ca sera beaucoup plus lisible
Ensuite, tu peux laisser tomber les Me: ils référencent l'objet dans lequel tu te trouves, et à moins qu'il existe des variables portant le même nom que tes champs ailleurs, leur mention est inutile.
Il y a une faute d'ortho sur "pricipale" qui doit être "principale"
Tu as omis de préciser d'où vient Count
sur quelle ligne l'erreur arrive-t-elle? Sur l'appel de fonction lui même? Si c'est le cas, vérifie bien tes paramètres, on sait jamais
Marsh Posté le 25-04-2003 à 15:50:03
Maintenant ca marche mais deux questions pour toi :
J'utilise
Code :
|
Mais si l'un des deux champs contien la valeur NULL ca merde ... tu ne saurais pas comment faire...
Merci
Marsh Posté le 25-04-2003 à 16:42:04
tiens je n'ai pas de propriété Size chez moi. Tu bosserais pas en Access et/ou avec DAO par hasard? (histoire que je m'y retrouve)
Marsh Posté le 25-04-2003 à 17:19:53
En acces oui ...
Enfin maintenant tout marche ... si tu veux je peux meme poster le code ...
@ toi de voir ... :-)
Marsh Posté le 25-04-2003 à 17:20:30
oui parce que j'ai rien en DAO ici et je suis curieux
Marsh Posté le 25-04-2003 à 17:24:11
Voici ma fonction telle quelle est actuellement :
Code :
|
Et Voila ce qui me permet de l'appeler :
Code :
|
Voila
Marsh Posté le 25-04-2003 à 17:32:02
je sais que je l'ai déjà dit, mais je te conseille vraiment de raccourcir le nom de tes variables, car avec l'habitude, tu verras qu'il est beaucoup plus efficace de coder, et tes pages de code seront moins chargées, donc plus lisibles
Marsh Posté le 27-04-2003 à 03:39:56
C'est pourtant pas compliqué de faire ça proprement...
C'est en VBS. Pour passer dans VB, faut quand même rajouter les types.
Code :
|
Marsh Posté le 25-04-2003 à 11:34:06
Public Function SeparationChaineEnDeux(ChainePricipale As String, TaillePremiereChaine As Integer, TailleDeuxiemeChaine As Integer) As String
Dim Count As Long
Dim LongueurChaineAdresse As Integer
Count = 1
ReDim SeparationChaineEnDeux(1) 'le résultat sera un tableau de deux éléments (numerotés 0 et 1)
If Len(ChainePricipale) + 1 > TaillePremiereChaine + TailleDeuxiemeChaine Then
LongueurChaineAdresse = TaillePremiereChaine + TailleDeuxiemeChaine
Else
LongueurChaineAdresse = Len(ChainePricipale) + 1
End If
Do While Mid(ChainePricipale, Count, 1) <> Chr(13) And Count < LongueurChaineAdresse And Count < TaillePremiereChaine
'Je compte les char jusqu'au retour chariot ou la fin de la chaine
'ou TaillePremiereChaine
Count = Count + 1
Loop
'Je mets le tronçon jusqu'à Count dans
Me.Adresse_de_facturation = Left(Me.Adresse, Count)
'mettre dans deuxvaleurs de renvoie...
If Count + 1 <= LongueurChaineAdresse Then
If Mid(Me.Adresse, Count, 1) = Chr(13) Then
'je recopie la chaine à partir de Count mais sans le retour chariot
SeparationChaineEnDeux(0) = Mid(Me.Adresse, Count + 2, LongueurChaineAdresse - (Count + 2))
Else
'il n'y a pas de retour chariot
SeparationChaineEnDeux(1) = Mid(Me.Adresse, Count + 1, LongueurChaineAdresse - (Count + 1))
End If
End If
End Function
---------------
Emouchet, chevalier pendion, vous souhaite une agréable journée.