tri d une feuille vers 2 autres. pb avec Bloc With

E

Eric

Guest
Bonjour,

Je range mes fichiers mp3 sur mon disque selon la structure 'genre\\artiste\\fichier.mp3' (avec fichier de la forme 'album - 01 - title')

Seulement, afin d'éviter trop de répertoires avec seulement qques fichiers, j'aimerais regrouper tous les fichiers d'un artist dans un répertoire 'Vrac' quand pour cet artiste, il y a moins de 5 titres dans ma liste.

Mon player offre la possiblité de copier la playlist dans le presse papier que je peux récupérer dans Excel.
J aimerais pouvoir faire des traitements sur les cellules avec une macro VBA.

Ma liste est composé de bcp de ligne, chq ligne correspondant à un fichier. Les colonnes sont utilisées comme suit:
A : tracknumber
B : artist -- c est celle ci qui m interesse ici, mais il sera question de copier la ligne complete
C : titre
D : année
... jusqu'à H qui contient le chemin complet d acces au fichier. Element tres important puisque c est avec la copie de cette colonne que je peux recréer une playlist m3u.

Voila pour l exposition de mon pb bien pratique :)

Débutant avec Excel, j ai aussi parfois du mal à me faire à la syntaxe VB (le C me semble plus familier!)... Question d'habitude.

Voici une ébauche de mon algo:

Code:
'Algo: Pour un artist B, si nombre(TitleC) < 5, alors artist dans vrac ; sinon dans artist
Private Sub TitlePerArtistAlgo()
'Dim TabTemp As Variant
'Dim RangeA As Range, RangeV As Range
'Dim MemF As Worksheet
Dim i1 As Integer, i2 As Integer
Dim L As Long
Dim C As Byte
i1 = i2 = 1
'With ActiveSheet
'Dernière ligne utilisée
L = ActiveSheet.Range('A1').SpecialCells(xlLastCell).Row
'Dernière colonne utilisée
C = ActiveSheet.Range('A1').SpecialCells(xlLastCell).Column
Do
    'Tant que l'artiste reste le meme, regarder la ligne suivante
    'On ne regarde que la 2ème colonne, celle des artistes
    Do
        i2 = i2 + 1
    Loop Until ActiveSheet.Cell(i2, 2) <> ActiveSheet.Cell(i1, 2)
    If (i2 - i1) < 5 Then
       'copie les lignes dans un tableau temporaire pour la feuille Vrac
       'RangeV = RangeV & .Range(.Cells(i1, 1), .Cells(i2, C)).Value
    Else
       'copie les lignes dans un tableau temporaire pour la feuille Artist
       'RangeA = RangeA & .Range(.Cells(i1, 1), .Cells(i2, C)).Value
    End If
    i1 = i2
Loop Until i1 = L - 1

'copie des tableaux temporaires vers les feuilles correspondantes
'With ActiveWorkbook
'    MemF.Name = 'Vrac'
'    RangeV.Copy Destination:=MemF.Range('A1')
'    MemF.Name = 'Artist'
'    RangeA.Copy Destination:=MemF.Range('A1')
'End With
'End With

J'ai déjà un pb de conception Excel, avec une erreur sur de bloc With. With ActiveSheet ne me semble pas indispensable, mais sans ce bloc with, Excel me revoit qd meme l'erreur. J ai essayé avec un With tmpSheet puis Set tmpSheet = ActiveSheet, mais cela ne fonctionne pas non plus.

Pouvez vous me donner un coup de main? Merci.
J imagine que mon exercice doit paraitre trivial pour les habitués d Excel...
 

2passage

XLDnaute Impliqué
Re:tri d une feuille vers 2 autres. pb avec Bloc W

Bonjour,

les .range et les .cells sans with doivent poser probleme....
Mais bon.. lire ton code, entre les annotations et les lignes inutiles, c'est assez indigeste... mets donc un fichier zip avec tes macros et 15 lignes de données, qu'on s y retrouve un peu mieux...

Message édité par: 2passage, à: 26/07/2005 14:13
 
E

Eric

Guest
Re:tri d une feuille vers 2 autres. pb avec Bloc W

En piece jointe le début de ma playlist et le brouillon de ma macro.
Toute suggestion est la bienvenue [file name=CountTitlePerArtist.zip size=43131]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CountTitlePerArtist.zip[/file]
 

Pièces jointes

  • CountTitlePerArtist.zip
    42.1 KB · Affichages: 14

Discussions similaires

Statistiques des forums

Discussions
312 922
Messages
2 093 658
Membres
105 777
dernier inscrit
Lili1411