Fonction Ubound, valeur incorrecte

Résolu
Yderian Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
Yderian Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un soucis avec la fonction Ubound. Quand je l'utilise, j'obtiens une erreur disant que ma selection est invalide, or je ne comprends pas pourquoi. Pouvez-vous m'aider ? Voici la ligne défectueuse et ensuite tout le programme
Ws_Feuille_destination.Cells(n, 3) = Tableau_de_mot(UBound(Tableau_de_mot))


Sub Ecrire_les_info_premiere_colonne()

    'On cible la première feuille contenant les info à manipuler
    ' Dim + nom_varialbe + As + type_varialbe (integer, long, String, ...)
    Dim Ws_Feuille_information As Worksheet
    Set Ws_Feuille_information = ThisWorkbook.Worksheets("Feuil1")

    'On cible la deuxième feuille contenant les résultat des traitements
    Dim Ws_Feuille_destination As Worksheet
    Set Ws_Feuille_destination = ThisWorkbook.Worksheets("Feuil2")
    

    'Récupération de la cellule voulu
    Dim libelle_cellule As String

   
    Dim Tableau_de_mot() As String
    Dim longueur_tab_mot As Integer
    Dim concatenation_adresse As String
    n = 1 'mise en place du compteur permettant d'avoir les bon numéro de ligne pour la prise d'information dans les cellules cible
    W = 1 'compteur permettant d'avoir les numéros associés aux publiants d'une même publication
    
    'Boucle for pour scanner toute les cellules
    derniere_ligne = Sheets("Feuil1").Range("A1").End(xlDown).Row
    
    'boucle for permettant de scanner ligne après ligne le dernier mot (le pays) de chaque cellule
    For j = 1 To 2
        derniere_colonne = Sheets("Feuil1").Cells(j, 1).End(xlToRight).Column
    
    'Boucle permettant l'écriture
         For l = 1 To derniere_colonne
            libelle_cellule = Ws_Feuille_information.Cells(j, l)
  
    'On va spliter la ligne par rapport aux virgules
    'Fonction permettant de séparer les phrases en cellules en fonction des virgules
                Tableau_de_mot = Split(libelle_cellule, ",")
    
    'on affiche toutes les occurences du tableau
    ' UBound renvoi l'indice max du tableau
                concatenation_adresse = ""
    'boucle if pour séparer le lien Internet
                    If l = 1 Then
                        For longueur_tab_mot = 1 To (UBound(Tableau_de_mot) - 1)
                            concatenation_adresse = concatenation_adresse + Tableau_de_mot(longueur_tab_mot)

        'Ws_Feuille_destination.Range("A" + CStr(longueur_tab_mot + 1)).Value = Tableau_de_mot(longueur_tab_mot)

                        Next longueur_tab_mot
    
                    Else
    
                        For longueur_tab_mot = 0 To (UBound(Tableau_de_mot) - 1)

        'MsgBox (Tableau_de_mot(longueur_tab_mot))

                            concatenation_adresse = concatenation_adresse + Tableau_de_mot(longueur_tab_mot)

        'Ws_Feuille_destination.Range("A" + CStr(longueur_tab_mot + 1)).Value = Tableau_de_mot(longueur_tab_mot)

                        Next longueur_tab_mot

                End If
    'Ecriture des résultats
                    Ws_Feuille_destination.Cells(n, 1) = W
    'Ici on ecris le résultat de cette transformation
                    Ws_Feuille_destination.Cells(n, 2) = concatenation_adresse
    'Ws_Feuille_destination.Cells(n, 2) = concatenation_adresse
                    Ws_Feuille_destination.Cells(n, 3) = Tableau_de_mot(UBound(Tableau_de_mot))


       n = n + 1

        Next
W = W + 1


Next
End Sub


Bien cordialement
Yderian


A voir également:

2 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
bonjour
lorsque tu utilises split l'indice de départ est 0 et non 1
0
Yderian Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, j'utilise d'ailleurs ce fait à certain moment (d'où le fait que soit je parte de 1 ou de 0). Mais je comprends pas, la fonction Ubound devrais normalement me renvoyer à la fin de mon split non ? La j'ai l'impression que ce n'est pas le cas quand ça marche pas, que mon tableau ne fait qu'une entrée (et donc valeur 0). Or ce n'est pas possible, j'ai regardé la ou il y a l'erreur, il y a bien un split de fait allant jusqu'à 5
0
Yderian Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
En fait, j'ai trouvé, le problème vient de la ligne
derniere_colonne = Sheets("Feuil1").Cells(j, 1).End(xlToRight).Column
qui me revois une mauvaise valeur lorsque je n'ai qu'une seule colonne. Quelqu'un aurais la solution ?

Merci d'avance

Cordialement,
0
Yderian Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Juste au cas ou, je poste la réponse ici,

Cells(1,Cells.Columns.Count).End(xltoLeft).Column
0