Création de liste spéciale

pierre6373

XLDnaute Nouveau
Bonjour,

En vue de créer une liste de choix, je cherche à créer une liste à partir de cellules dont le texte est écrit en gras.

Mon tableau possède une colonne de terme en caractères normaux et en caractères gras avec certaines cellules vides. Et je souhaiterais isoler tous les termes en gras au sein d'une liste obtenue avec 'Insertion'/'Nom'/'Définir'.

merci de votre aide
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir pierre6373,

Si (et seulement si) les éléments en Gras ne le sont pas par mise en forme conditionnelle, ci-dessous une procédure pour créer une plage nommée 'ListeGras' rassemblant ce type d'éléments...

Cet exemple considère que tous les éléments sont listés en colonne A Feuille 1 :

Sub CreerPlageElmtGras()
'----------------------------
' myDearFriend! - 14/02/2006
'----------------------------
Dim PlageTot As Range, Plage As Range, R As Range
      Set PlageTot = Sheets('Feuil1').UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
      For Each R In PlageTot
            If R.Font.Bold Then
                  If Plage Is Nothing Then Set Plage = R
                  Set Plage = Union(Plage, R)
            End If
      Next R
      If Not Plage Is Nothing Then
            ActiveWorkbook.Names.Add Name:='listeGras', RefersToLocal:='=' & _
                  Plage.AddressLocal(ReferenceStyle:=xlR1C1)
            'Si on veut sélectionner la plage :
            Range('listeGras').Select
      End If
End Sub
Cordialement,

Message édité par: myDearFriend!, à: 14/02/2006 01:28
 

pierre6373

XLDnaute Nouveau
Bonjour et merci pour le coup de main,

Malheuremeusement, le bout de programme marche mais il est limité en nombre de cellules sélectionnées, du coup je n'ai pas toute la colonne prise en compte. En plus la liste de choix (validation) n'accepte pas que les cellules de la liste ne soient pas successives.

Je pense qu'il faudrait envisager de recopier les termes dans une colonne pour ensuite faire la liste mais je ne sais pas si c'est possible automatiquement.

Merci d'avance
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir pierre6373,

Je n'avais pas imaginé le pourquoi de ta demande de création de plage nommée, maintenant je comprends mieux...

Effectivement, pour une liste de validation, la plage spécifiée doit être d'un seul tenant (cellules successives donc).

Ci-dessous, une refonte de la procédure précédente qui, cette fois, crée une liste des éléments souhaités en colonne A de la Feuil2, puis crée une référence nommée pointant sur cette nouvelle liste et donc utilisable en validation de données...

Sub CreerPlageElmtGras()
'----------------------------
' myDearFriend! - 15/02/2006
'----------------------------
Dim PlageTot As Range, Plage As Range, R As Range
Dim L As Long
        Set PlageTot = Sheets('Feuil1').UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
        With Sheets('Feuil2')
            .Columns(1).ClearContents
            For Each R In PlageTot
                    If R.Font.Bold Then
                              L = L + 1
                              .Cells(L, 1).Value = R.Value
                    End If
            Next R
            If L > 0 Then
              Set Plage = .Range(.Cells(1, 1), .Cells(L, 1))
              If Not Plage Is Nothing Then
                        ActiveWorkbook.Names.Add Name:='listeGras', RefersTo:='=' & 'Feuil2!' & _
                                Plage.Address(ReferenceStyle:=xlR1C1)
              End If
            End If
        End With
End Sub
Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
312 525
Messages
2 089 341
Membres
104 127
dernier inscrit
Tantetine