[VBA] Extraire dans une chaine un Collection.Item

Perth

XLDnaute Nouveau
Bonjour a tous,

J'aurais besoin de vos lumières pour un problème plus ou moins épineux qui me cause souci.

Je met en place une macro qui importe des fichiers texte dans un classeur excel. Les données importées sont rangées dans une colonne d'une feuille crée comportant le nom du répertoire importé.

Chaque fichier texte est donc rangé dans une colonne. J'aimerais intitulé chaque colonne (sur la ligne 1 quoi) par le nom de fichier correspondant.
Je passe mes fichiers dans une collection colWave et je parcours chaque fichier via colWave.Item(i) (i étant l'indice de la boucle)

Lorsque je colle mes doonées d'un fichier texte dans une colonne excel, j'utilise:
Code:
ActiveSheet.Cells(1, j).Value = colWave.Item(j)

Pour faire une entete avec le nom du fichier. Pourtant cela ne marche pas. Je pense que le type est incompatible. D'ou ma question: Est-il possible d'extraire le nom du fichier de cet Item sous forme de chaine ?

J'espere avoir été plus ou moins clair ^^
Merci d'avance!
 

Perth

XLDnaute Nouveau
Re : [VBA] Extraire dans une chaine un Collection.Item

Oui effectivement ca le serais :p voila voila:

VB:
   'Ouverture de la boite de dialogue pour selection du répertoire à importer
   With Application.FileDialog(msoFileDialogFolderPicker)
             .InitialFileName = Repertoire
             .Title = "Veuillez sélectionner le dossier où se trouvent les fichiers de réflectance"
             .ButtonName = "Choisir ce dossier"
             .Show
                    
             If .SelectedItems.Count = 1 Then
                    strDir = .SelectedItems(1)
             Else
                   msgErr = "La macro termine son execution"
                   MsgBox msgErr, vbInformation, "Arrêt"
                   End
              End If
   End With
        
   Repertoire = strDir
            
   Fichier = Dir(Repertoire & "\*.txt") 'on ne s'occupe que des fichiers qui ont l'extention .txt
            
   Path = Repertoire + "\" + Fichier
           
    Do While Fichier <> ""  'Boucle sur les fichiers, les stocke dans une collection
          colValues.Add Fichier
          colWave.Add Fichier
          Fichier = Dir
     Loop
 

Perth

XLDnaute Nouveau
Re : [VBA] Extraire dans une chaine un Collection.Item

Mmm, jpense avoir trouvé l'origine du problème. Je pense qu'il ne "trouve" pas colWave.Item(j)

Je m'explique:

VB:
'Voici ma boucle qui parcours la collection
For j = 1 To colWave.Count
    Path = Repertoire + "\" + colWave.Item(j)
               
    'Ouverture du fichier
    OpenUp (Path)
    
    
    ' On copie les longueurs d'onde
    Call CopyValuesWavesOO(loMax, j)
    
    'On range le résultat du nombre de ligne du premier fichier utilisé pour comparer avec les autres et on colle les lngueurs d'onde du premier fichier
    If j = 1 Then
        Call PasteValuesRéflectanceOO(1, j)
    Else
        Call PasteValuesRéflectanceOO(j + 1, j)
    End If
         [...]    
Next j

Et ma fonction PasteValuesRéflectanceOO dans lequel je "met en forme" la colonne

VB:
Private Sub PasteValuesRéflectanceOO(Colonne As Integer, j As Integer)
       ThisWorkbook.Activate 'On retourne au classeur où s'execute la macro
       ActiveSheet.Cells(1, 1).Value = "Wavelength"
          'ActiveSheet.Cells(1, 2).Value = colValues.Item(j)
       ActiveSheet.Range(Cells(2, Colonne), Cells(2, Colonne + 1)).Select 'et on choisit la case de la premiere ligne de la colonne donnée en parametre
       ActiveSheet.Paste 'pour coller dans la même colonne les données copiées.
End Sub

Je déclare pas forcement au bon endroit non ?
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : [VBA] Extraire dans une chaine un Collection.Item

Re,

C'est un joli jeu de piste mais ça fait un peu puzzle avec la moitié des pièces pour moi :rolleyes:

Ta procédure PasteValuesRéflectanceOO utilise la collection colWave ?
Si oui, il faut soit lui passer la collection en paramètre (ce qui ne semble pas être fait), soit déclarer ta collection en Public (ou au moins en dehors des 2 procédures si elle appartiennent au même module)

Pas sûr que ce soit trés clair, ce que je dit, mais comme ça on sera deux :)

Edit : Salut Pierrot
 

Perth

XLDnaute Nouveau
Re : [VBA] Extraire dans une chaine un Collection.Item

Salut Pierrot et re toto,

xD oui j'ai du mal à m'exprimer aussi bien en par écris que dans mon code. Mais tu as mis le doigt sur mon problème.

Comment puis-je déclarer ces collection en publique ? ^^"
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz