Nouvelle feuille selon condition de cellule

  • Initiateur de la discussion Initiateur de la discussion Nico
  • Date de début Date de début

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 !

N

Nico

Guest
Salut !

J'arrive pas à comprendre pourquoi ma macro ne fonctionne pas...

Pour chaque cellule de la feuille 'données' ayant la couleur=37 alors, il faut créer une nouvelle feuille portant comme nom le contenu de la cellule de couleur.

J'ai tenté ça mais sans succès... pourquoi ?
Si qqn à la solution... Merci d'avance.

Sub CreaFeuilles()

Dim vCel As Object
Dim couleur As Integer
Dim NomFeuille As String


couleur = 0

For Each vCel In Sheets('données').Range('B2:B100')
With vCel.Interior.ColorIndex = 37
If vCel.Interior.ColorIndex = 37 Then
couleur = 1

If couleur = 1 Then

vCel.Value = NomFeuille

ActiveWorkbook.Sheets.Add
ActiveSheet.Name = NomFeuille

End If
End If
End With
Next
End Sub
 
Bonjour Nico, le forum,

Un essai ci-dessous :

Sub CreaFeuilles()

Dim vCel As Object
Dim couleur As Integer
Dim NomFeuille As String

couleur = 0

Code:
For Each vCel In Sheets('données').Range('B2:B100')
    With vCel.Interior.ColorIndex = 37
        If vCel.Interior.ColorIndex = 37 Then
            couleur = 1
                If couleur = 1 Then
                    NomFeuille = vCel.Value
                    ActiveWorkbook.Sheets.Add
                    ActiveSheet.Name = NomFeuille
                End If
        End If
    End With
Next

End Sub

C'est quasiment le même code que toi, mis à part ton vCel.Value = NomFeuille que j'ai inversé : NomFeuille = vCel.Value. C'est plus logique dans ce sens... 😉

Ciao ciao !! 😉
 
Salut Nico, de façon plus courte:

Sub CreaFeuilles2()
Dim NomFeuille As String
For Each c In Worksheets('données').Range('B2:B100')
If c.Interior.ColorIndex = 37 Then
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = c.Value
End If
Next
End Sub


Ici le With... End With n'est pas nécessaire et d'autres choses encore, comme la couleur. Pour quoi faire un 2ème test sur la couleur si l'index de couleur=37 ?
 
Oups, désolé, pas terrible le code là...

Comme ça c'est mieux :


Sub CreaFeuilles()

Dim vCel As Object
Dim couleur As Integer
Dim NomFeuille As String

couleur = 0

For Each vCel In Sheets('données').Range('B2:B100')
With vCel.Interior.ColorIndex = 37
If vCel.Interior.ColorIndex = 37 Then
couleur = 1

If couleur = 1 Then

NomFeuille = vCel.Value
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = NomFeuille

End If
End If
End With
Next
End Sub

Ciao ciao !! 😉
 
Salut Law,

Law écrit:
With vCel.Interior.ColorIndex = 37
If vCel.Interior.ColorIndex = 37 Then
couleur = 1
If couleur = 1 Then
NomFeuille = vCel.Value
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = NomFeuille
End If
End If
End With

Le code s'applique donc unniquement aux cellules d'index de couluer 37, pourquoi faire un autre test de l'index de couleur ?
 
bonjour tous le monde macro a adapter Option Explicit
Sub TriFeuilles()
Dim Bcle%, Index%, Sh As Object
On Error Resume Next
With ThisWorkbook
For Each Sh In ThisWorkbook.Sheets
For Index = 1 To .Sheets.Count
If LCase(Sh.Name) > LCase(.Sheets(Index).Name) And Sh.Index < Index Then
Sh.Move , .Sheets(Index)
End If
Next Index
Next Sh
End With
End Sub'salutations
 
bonjour tous le monde macro a adapter Option Explicit
Sub TriFeuilles()
Dim Bcle%, Index%, Sh As Object
On Error Resume Next
With ThisWorkbook
For Each Sh In ThisWorkbook.Sheets
For Index = 1 To .Sheets.Count
If LCase(Sh.Name) > LCase(.Sheets(Index).Name) And Sh.Index < Index Then
Sh.Move , .Sheets(Index)
End If
Next Index
Next Sh
End With
End Sub'salutations
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
14
Affichages
484
Retour