Creer des Plan/Group sous excel par macro

jothecracker
Messages postés
26
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
9 mars 2011
- 5 mars 2011 à 01:12
jothecracker
Messages postés
26
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
9 mars 2011
- 9 mars 2011 à 20:42
Bonjour,

Je vient poser ma question apres moult bidouille avec se satane Excel (2003)

j'arrive a cree plusieurs plan/groupe (les + et -) afin de masquer les colonnes un peut comme les fonctions devellopee et reduire que l'on peu trouver sur certain site....

donc pas de probleme en manuelle, pas de probleme non plus si c'est defini en dur (Range("A1:B1").Coloumns.Group) mais alors dans une boucle avec des valeurs de colonnes en dynamique, ca devient completement ingerable, il m'ajoute chaque group systematiquement au precedant... ex:

je cree un group de A1 a B1 puis un deuxieme de C1 a D1 et au final il me fait un groupe unique de A1 a D6, j'ai tourner le probleme dans tout les sens, ca me parait impossible,

les variables dynamique (verifier avec un msgbox) sont bien creer, pas de probleme dans les colonnes, pas de raisons apparante pour ne creer qu'un seul et meme groupe.

Je suis ouvert a toute suggestion,

Cdlt,

Vash


Voici le Sub a coller et executer directement sur une feuille verge excel

Dim Numero_1ere_Rame As Integer
Dim Numero_Derniere_Rame As Integer
Dim Rame_Elements(3) As String
Dim LigneDepart As Integer
Dim Col As Integer



Function ConvertToLetter(ByVal NumCol As Long) As String
Dim i As Long, x As Long, s As String
For i = 6 To 0 Step -1
x = (26 ^ (i + 1) - 1) / 25 - 1
If NumCol > x Then
s = s & Chr(((NumCol - x - 1) \ 26 ^ i) Mod 26 + 65)
End If
Next i
ConvertToLetter = s
End Function


Sub Creation_Tableau()

' Definition
Numero_1ere_Rame = 201
Numero_Derniere_Rame = 224
Rame_Elements(0) = "CE1"
Rame_Elements(1) = "C1"
Rame_Elements(2) = "C2B"
Rame_Elements(3) = "CE2"

'Placement Tableau
LigneDepart = 2
ColonneDepart = 1

'##############################
' Debut Entete Tableau
'##############################
Col = ColonneDepart
'#### FMP
Cells(LigneDepart, Col).Value = "FMP"
Range(ConvertToLetter(1) & LigneDepart & ":" & ConvertToLetter(1 + 5) & LigneDepart).Select
With Selection
    .HorizontalAlignment = xlCenter
    .WrapText = True
    .Merge
End With
'###### Numero
Cells(LigneDepart + 1, Col).Value = "Numero"
Col = Col + 1
'###### Type
Cells(LigneDepart + 1, Col).Value = "Type"
Col = Col + 1
'###### Revision
Cells(LigneDepart + 1, Col).Value = "Revision"
Col = Col + 1
'###### Description
Cells(LigneDepart + 1, Col).Value = "Description"
Col = Col + 1
'#### Reception
Cells(LigneDepart + 1, Col).Value = "Reception"
Range(ConvertToLetter(Col) & LigneDepart + 1 & ":" & ConvertToLetter(Col + 1) & LigneDepart + 1).Select
With Selection
    .HorizontalAlignment = xlCenter
    .WrapText = True
    .Merge
    .EntireRow.AutoFit
End With
'###### Date
Cells(LigneDepart + 2, Col).Value = "Date"
Col = Col + 1
'###### Signee
Cells(LigneDepart + 2, Col).Value = "Signee"
Col = Col + 1
'#### Procedure
Cells(LigneDepart, Col).Value = "Procedure"
'###### Date
Cells(LigneDepart + 1, Col).Value = "Date"
Col = Col + 1

'#### Rame
For Num_Rame = Numero_1ere_Rame To Numero_Derniere_Rame

    '#### Numero de Rame
    Cells(LigneDepart, Col).Value = "Rame " & Num_Rame
    Range(ConvertToLetter(Col) & LigneDepart & ":" & ConvertToLetter(Col + UBound(Rame_Elements) + 1) & LigneDepart).Select
    With Selection
        .HorizontalAlignment = xlCenter
        .WrapText = True
        .Merge
        .EntireRow.AutoFit
    End With
    '###### Bilan
    Cells(LigneDepart + 1, Col).Value = "Bilan"
    ColDebutElem = Col
    Col = Col + 1
    '###### Elements
    For Each Element In Rame_Elements
        Cells(LigneDepart + 1, Col).Value = Element
        Col = Col + 1
    Next
    ColFinElem = Col - 1
    
    
    ' Fonction sense genere mes group pour chaque element
    Dim fuck As String
    fuck = ConvertToLetter(ColDebutElem) & (LigneDepart + 1) & ":" & ConvertToLetter(ColFinElem) & (LigneDepart + 1)
    Range(fuck).Columns.Group
    

    
Next Num_Rame


' Essaye concluant sur les lignes
Range("B3:B11").Rows.Group
Range("B13:B21").Rows.Group
Range("B23:B31").Rows.Group

'masquer les groups
ActiveSheet.Outline.ShowLevels ColumnLevels:=1

End Sub

1 réponse

jothecracker
Messages postés
26
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
9 mars 2011
1
9 mars 2011 à 20:42
Bonjour,

Personne n'a d'idee a ce sujet ?

Y aurait-il une erreur dans ma boucle ?

Cordialement,

Vash
0