VBA et utilisation de Split

Gousnef

XLDnaute Nouveau
bonjour,
Je m'appelle David et je suis tout nouveau sur le forum.Un amis m'a parlé de votre forum et j'aurais une petite question:
En fait j'ai le code suivant en VBA je met la saisie complète mais il s'agit d'un petit detail.

Function RechercheSCADEName(arg_lien, arg_CarSpecialBDSP, arg_MsgName, arg_PortName) As String

ligne = Range("A65536").End(xlUp).Row
For Each newsel In Range("A1:A" & ligne)
If newsel.Value = "Parameter" And Cells(newsel.Row, 12) = arg_lien Then
linklin2 = newsel.Row

tablo2 = Split(Cells(linklin2 + 1, 2), arg_CarSpecialBDSP)
If Cells(linklin2 + 1, 1) = "Codage Param" And arg_PortName = tablo2(1) And arg_MsgName = tablo2(2) Then

scade_name = Cells(linklin2 + 1, 114)
Exit For
End If
End If
Next newsel

End Function

Je n'explique pas tout le code, il s'agit juste de récupérer des variables.Bref la ligne qui m'intéresse est la suivante:
tablo2 = Split(Cells(linklin2 + 1, 2), arg_CarSpecialBDSP)

Concrètement j'utilise une fonction séparant (dans une cellule Excel) les différents termes. Exemple 1:\tata\toto\titi \ je récupèrerais alors toto (en suivant la ligne de commande tablo2=... ,ici linklin2 est juste un numéro de ligne et arg_CarSpecialBDSP est "\" d'ou la possibilité de splitté tata, toto etc...
Le problème étant que dans le document je peut retrouver dans une cellule Excel écrite :Exemple \tata ici il n'y a pas de second terme (\toto dans l'exemple précédent). lors de l'exécution du programme celui s'arrête me disant que pour tablo2 (2) (tablo2 (2) me permet de récupéré la valeur toto dans l'exemple 1 donné précédemment) l'indice n'est pas valide.
Je voudrais alors insérer une ligne de commande permettant de dire que s'il n'existe pas de suite à \tata du genre \tata\toto que le programme sorte de la fonction RechercheSCADEName pour qu'il n'indique pas de message d'erreur.

J'ai essayé d'etre le plus clair possible, merci de votre aide
 

myDearFriend!

XLDnaute Barbatruc
Re : VBA et utilisation de Split

Bonsoir Gousnef, le forum,

A vrai dire je n'ai pas compris grand chose dans ton code et je n'ai surtout pas compris pourquoi l'utilisation d'une function étant donné que tu ne renvoies aucune valeur.... peut-être en manque t'il une partie (?)

Cela dit, pour te mettre sur la voie (je pense), quelque chose comme ça :
Code:
[SIZE=2]    [COLOR=NAVY]If [B]UBound[/B][/COLOR][B]([/B]tablo2[B]) >= 2[/B] [COLOR=NAVY]Then
        If[/COLOR] Cells(linklin2 + 1, 1) = "Codage Param" And arg_PortName = tablo2(1) And arg_MsgName = tablo2(2) [COLOR=NAVY]Then[/COLOR]
            [COLOR=GREEN]'...[/COLOR]
            [COLOR=GREEN]'...[/COLOR]
            [COLOR=GREEN]'...[/COLOR]
        [COLOR=NAVY]End If
    End If[/COLOR]
[/SIZE]
Ce code serait issu d'un travail de notre ami Hervé à l'origine que je n'en serais pas étonné (grand adepte du "Split()" et des "Tablo()" :) ). Une chose est sûr toutefois, lui aurait sans aucun doute déclaré ses variables.

Cordialement,
 

ChTi160

XLDnaute Barbatruc
Re : VBA et utilisation de Split

Salut Gousnef
bonsoir le Forum

Arfff pas sur d'avoir compris(pas evident) ,mais voilà ce à quoi j'ai pensé introduire un Select case

Code:
Dim Ok as Boolean
Ok=False
If Cells(linklin2 + 1, 1) = "Codage Param" Then
[COLOR=Blue]Select Case[/COLOR] UBound(tablo2)
      [COLOR=Blue]Case[/COLOR] Is = 1
            If arg_PortName = tablo2(1) Then Ok = True
      [COLOR=Blue]Case[/COLOR] Else
            If arg_PortName = tablo2(1) And arg_MsgName = _
                                                tablo2(2) Then Ok = True
[COLOR=Blue]End Select[/COLOR]
            If Ok = True Then scade_name = Cells(linklin2 + 1, 114)
End If

PS arffffffff Pas vu SALUT Mon Ami Didier content de te croiser , j'espère que tu vas Bien
Il a l'oeil mon Ami et j'ai moi déclaré ma variable j'ai de bons maitres Lol Lol
Arffff il a du déclarer
scade_name en Public Lol
Bonne fin de Soirée
 
Dernière édition:

Gousnef

XLDnaute Nouveau
Re : VBA et utilisation de Split

Bonsoir merci a tous les deux !!!
biensur il manque une partie mais elle ne me semblait pas importante pour etre signalée (Toutes les variables sont declarées lol).
C'est en fait juste la ligne
tablo2 = Split(Cells(linklin2 + 1, 2), arg_CarSpecialBDSP) qui posait problème, tout le reste fonctionnant tres bien. C'est un cas particulier qui penalisait le deroulement du code, le fait de ne pas avoir de second menbre séparé par le "\". j'essayerais vos deux solution et je vous tiendrais au courant merci encore
 

Discussions similaires

Réponses
1
Affichages
194

Statistiques des forums

Discussions
312 424
Messages
2 088 287
Membres
103 808
dernier inscrit
qsfdhqzsfg