Macro Excel2000 découpage d'un fichier en plusieurs onglets

Macro Excel2000 découpage d'un fichier en plusieurs onglets - VB/VBA/VBS - Programmation

Marsh Posté le 17-03-2011 à 11:19:22    

Bonjour à tous,
 
J'aimerai automatiser par macro le découpage d'un fichier Excel en fonction des changements de valeurs de la colonne F. Pour chaque valeur de cellule, couper la ou les ligne(s) concernée(s) et coller dans nouvel un onglet nommé comme la valeur de la cellule.  
Les données de la colonne F sont au format texte et le nombre de lignes du fichier et le nombre de valeurs prises par les cellules de la colonne F sont variables.
 
Exemple fichier de départ :
        F
1 ACQUIS
2 ACQUIS
3 DBT_RDMP_CALL
4 EQY_OFFER
5 EQY_OFFER
6 EQY_OFFER
7 EQY_OFFER
8 EQY_OFFER
9 EQY_OFFER
10 RIGHTS_OFFER
 
J'aimerai obtenir un onglet nommé 'ACQUIS' où toutes les lignes dont la cellule en Colonne F correspond auront été collées, idem avec un onglet 'DBT_RDMP_CALL', 'EQY_OFFER' et 'RIGHTS_OFFER'
 
Merci d'avance à ceux ou celles qui pourront m'aider.


Message édité par lunamous le 17-03-2011 à 11:23:07
Reply

Marsh Posté le 17-03-2011 à 11:19:22   

Reply

Marsh Posté le 17-03-2011 à 16:07:58    

Salut,voila pour ce qui est de la création des feuilles
j'ai donné à la feuille contenant les données le nom d'onglet Param
Sans doute à adapter  


Option Explicit
 
Sub Tst()
Dim LastRow As Long,  i As Long
Dim Ws As Worksheet, sNomF As String
    LastRow = Sheets("Param" ).Range("F" & Rows.Count).End(xlUp).Row
    For i = 1 To LastRow
        sNomF = Split(Sheets("Param" )..Range("F" & i), " " )(1)
        If ExistenceFeuille(sNomF) = False Then
            Set Ws = Sheets.Add
            Ws.Name = sNomF
            Ws.Move Before:=Sheets("Param" )
        End If
    Next i
End Sub
 
Private Function ExistenceFeuille(ByVal sNomFeuille As String) As Boolean
  On Error Resume Next
  ExistenceFeuille = Sheets(sNomFeuille).Name <> ""
  Err.Clear
End Function


Message édité par kiki29 le 17-03-2011 à 19:18:46
Reply

Marsh Posté le 17-03-2011 à 18:57:44    

Bonsoir,
 
J'ai renommé l'onglet Param et j'ai lancé la macro. J'ai le message "L'indice n'appartient pas à la sélection" qui s'affiche et le débogage pointe sur : LastRow = Sheets("Param" ).Range("F" & Rows.Count).End(xlUp).Row
 
Voyez-vous d'où peut venir le problème ?
 
Merci d'avance.

Reply

Marsh Posté le 17-03-2011 à 19:08:58    

Re,si tu renommes Param il faut également modifier Sheets("????" ) en conséquence, d'autre part j'ai pris tes données brutes et donc considéré que dans la colonne F il y a par exemple "1 ACQUIS"  
alors que peut-^tre il y a uniquement "ACQUIS"  ? auquel cas sNomF  sera a corriger en  Sheets("????" ).Range("F" & i))
 
J'ai corrigé le code plus haut en remplaçant Feuil1 ( codeName ) par Sheets("????" ) mais je te conseille pour la suite de te renseigner sur CodeName car cette propriété permet de ne pas toucher au code VBA même si l'on renomme l'onglet ou le déplace, voir par exemple sur http://www.ozgrid.com/VBA/excel-vba-sheet-names.htm


Message édité par kiki29 le 17-03-2011 à 19:25:01
Reply

Marsh Posté le 05-04-2011 à 14:40:17    

J'ai posté la solution proposée par une collègue sur ce lien : http://www.excel-downloads.com/for [...] rents.html

Reply

Marsh Posté le 05-04-2011 à 20:27:56    

Re,grand bien te fasse

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed