Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Select case pour mettre titre sur feuilles

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cathodique

XLDnaute Barbatruc
Bonsoir,

Je voudrais compléter la présentation de 3 feuilles en ajoutant des titres. Ces 3 feuilles A, B et C sont obtenues par macros, leurs nombres de lignes et de colonnes sont différents. la feuille "A" a un titre qui diffère un peu des feuilles B et C dont le titre est le même, c'est juste la position de celui-ci qui diffère. J'ai commencé le code, mais je bloque pour faire un select case que je n'ai jamais utilisé.

Code:
Sub Titre_CMDP()
Dim derlig As Long, dercol As Long
Dim Tp
Dim Ind As Byte

Application.ScreenUpdating = False
 
Tp = Array("A", "B", "C")
 
For Ind = 0 To 2
    
    With Worksheets(Tp(Ind))
    dercol = .Cells(4, .Columns.Count).End(xlToLeft).Column
    derlig = .Cells(Application.Rows.Count, 1).End(xlUp).Row

'select case
'pour feuilleA
Range("A1") = "Région"
Range("B1") = "RAPPORT CONCERNANT A"
Cells(1, dercol + 6) = Sheets("données").Range("A1")'date
Cells(1, dercol + 5) = "Date:"
''''''''''''''''''''''''''''''''''

'pour feuilles B et C
Range("A1") = "Région"
Range("B1") = "RAPPORT CONCERNANT BC"
Cells(1, dercol) = Sheets("données").Range("A1") 'date
Cells(1, dercol - 1) = "Date:"

    End With
    
Next Ind
        
End Sub

Je vous remercie pour votre aide. Bonne soirée.

Cordialement,
 

Pièces jointes

Re : Select case pour mettre titre sur feuilles

bonsoir à tous,

Une autre solution, (pour respecter le choix de select case),qui permet de bénéficier du Worksheets(Tp(Ind)).et qui évite les "select".
Attention à bien mettre . (point) devant chaque range, cells ..., sinon tout se passera sur la feuille active et non sur la feuille prévue:

Code:
   Select Case Ind

        Case 0 'pour feuilleA
            .Range("A1") = "Région"
            .Range("B1") = "RAPPORT CONCERNANT A"
            .Cells(1, dercol + 6) = Sheets("données").Range("A1")
            .Cells(1, dercol + 5) = "Date:"

        Case 1, 2   'pour feuilles B et C
            .Range("A1") = "Région"
            .Range("B1") = "RAPPORT CONCERNANT BC"
            .Cells(1, dercol) = Sheets("données").Range("A1")
            .Cells(1, dercol - 1) = "Date:"

    End Select
Bonne suite
 
Re : Select case pour mettre titre sur feuilles

Bonjour cathodique, Jack2, Paf,

Si c'est pour apprendre à se servir de Select Case pourquoi pas.

Mais ici la fonction IIf est nettement plus simple :

Code:
Sub Titre_CMDP()
Dim Tp, Ind As Byte, dercol%
Tp = Array("A", "B", "C")
For Ind = 0 To 2
  With Sheets(Tp(Ind))
     .[A1] = "Région"
    .[B1] = "RAPPORT CONCERNANT " & IIf(Ind, "BC", "A")
    dercol = .Cells(4, .Columns.Count).End(xlToLeft).Column
    .Cells(1, dercol + IIf(Ind, -1, 5)) = "Date:"
    .Cells(1, dercol + IIf(Ind, 0, 6)) = Sheets("données").[A1]
  End With
Next
End Sub
ou encore plus simple :

Code:
Sub Titre_CMDP1()
Dim Tp, Ind As Byte, dercol%
Tp = Array("A", "B", "C")
For Ind = 0 To 2
  With Sheets(Tp(Ind))
    .[A1] = "Région"
    .[B1] = "RAPPORT CONCERNANT " & IIf(Ind, "BC", "A")
    dercol = .UsedRange.Columns.Count
    .Cells(1, dercol - 1) = "Date:"
    .Cells(1, dercol) = Sheets("données").[A1]
  End With
Next
End Sub
A+
 
Re : Select case pour mettre titre sur feuilles

Bonjour Job75,

Je te remercie pour ton aide. En effet, mon objectif était d'apprendre à me servir de select case.

Je te remercie aussi pour ton code qui pourrait toujours me servir. j'utiliserai le code avec le select case car j'ai simplifié mon fichier, le titres sont en fait différents.

Cordialement,
 
Re : Select case pour mettre titre sur feuilles

Bonjour cathodique, Paf, job75 et le forum

Merci de rappeler qu'il faut éviter les doublons Worksheets(Tp(Ind) puis Select (ça rentre doucement...).

Pour job75, je ne connaissais pas la fonction IIF qui a l'air bien pratique. Par contre, je comprends bien le test sur les quelques exemples que j'ai cherché (comme celui de Microsoft " CheckIt"). Dans le cas présent, cela fonctionne pour :
Code:
For Ind = 0 To 2
mais pas pour :
Code:
For Ind = 1 to 3
où il n'y a pas de valeur Vrai

Si tu as 5 min pour m'expliquer en quoi le 0 sert de test. Merci

Bon dimanche à tous
A+ JJM
 
Re : Select case pour mettre titre sur feuilles

salut

.Used... peut poser problème.
Avec Select Case et des changements feuille par feuille (surtout avec des cellules fusionnées)

Code:
Sub Titre_CMDP()
  Dim derlig As Long, dercol As Long
  Dim Ind As Byte
  Application.ScreenUpdating = False
  For Ind = 0 To 2
    Sheets(Array("A", "B", "C")(Ind)).Select
    Select Case Ind
      Case 0
        [A1] = "AAAA": [B1] = "aaaaaa": dercol = 10
      Case 1
        [A1] = "BBBB": [B1] = "bbbbb": dercol = 13
      Case Else
        [A1] = "CCCC": [B1] = "ccc": dercol = 11
    End Select
    Cells(1, dercol) = Sheets("données").Range("A1")
    Cells(1, dercol - 1) = "Date:"
  Next
End Sub
à quoi je préfère (Array pour Array)
Code:
Sub Titre_CMDP2()
  Dim dercol As Long
  Dim Ind As Byte
  Application.ScreenUpdating = False
  For Ind = 0 To 2
    With Sheets(Array("A", "B", "C")(Ind))
      .[A1] = Array("AAAA", "BBBB", "CCCC")(Ind)
      .[B1] = Array("aaaa", "bbbb", "cccc")(Ind)
      dercol = Array(10, 13, 11)(Ind)
      .Cells(1, dercol) = Sheets("données").Range("A1")
      .Cells(1, dercol - 1) = "Date:"
    End With
  Next
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
912
Réponses
7
Affichages
454
Réponses
15
Affichages
786
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…