Fonction Ubound, valeur incorrecte

Résolu/Fermé
Yderian Messages postés 7 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 22 mai 2015 - 21 mai 2015 à 11:40
Yderian Messages postés 7 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 22 mai 2015 - 21 mai 2015 à 13:22
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 mai 2015 à 11:54
bonjour
lorsque tu utilises split l'indice de départ est 0 et non 1
0
Yderian Messages postés 7 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 22 mai 2015
21 mai 2015 à 12:01
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 jeudi 21 mai 2015 Statut Membre Dernière intervention 22 mai 2015
21 mai 2015 à 13:17
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 jeudi 21 mai 2015 Statut Membre Dernière intervention 22 mai 2015
21 mai 2015 à 13:22
Juste au cas ou, je poste la réponse ici,

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