1 pièce(s) jointe(s)
Création onglet avec condition en VBA
Bonjour
Pour créer des onglets à partir de deux modèles (QUANTI ou QUALI)
J'ai mis ce code pour l'onglet rapport
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| Private Sub Worksheet_Change(ByVal Target As Range)
Trouv = False
'Test si la cellule est bien en colonne P (colonne 16 )
If Target.Column = 16 Then
'Test si la cellule est bien avant la ligne (pas de génération de feuille dont le nom est : " ")
If Target.Row < 283 Then
Onglet = Cells(Target.Row, 1).Value
'Test si la cellule contient "quanti" (Lcase met obligatoirement en minuscule toute chaine de caractère)
If LCase(Target.Value) = "quanti" Then
'on test le nom des feuilles et si on la trouve alors Trouv = True
For Each Sheet In Sheets
If Sheet.Name = Onglet Then
Trouv = True
Exit For
End If
Next
'Si on l'a trouvé on l'affiche sinon il faut la créer
If Trouv = True Then
Sheets(Onglet).Visible = True
Else
'on copie la feuille Model en dernier
Sheets("MODELCOMPQUANTI").Visible = True
Sheets("MODELCOMPQUANTI").Copy After:=Sheets(Sheets.Count)
Sheets("MODELCOMPQUANTI").Visible = False
'on renomme cette derniere
Sheets(Sheets.Count).Name = Onglet
Sheets(Sheets.Count).Visible = True
End If
Else
For Each Sheet In Sheets
If Sheet.Name = Onglet Then
Trouv = True
Exit For
End If
Next
'Si on l'a trouvé on l'affiche sinon il faut la créer
If Trouv = True Then
Sheets(Sheets.Count).Visible = True
End If
End If
End If
End If
Trouv = False
'Test si la cellule est bien en colonne Q (colonne 17 )
If Target.Column = 17 Then
'Test si la cellule est bien avant la ligne (pas de génération de feuille dont le nom est : " ")
If Target.Row < 283 Then
Onglet = Cells(Target.Row, 1).Value
'Test si la cellule contient "quali" (Lcase met obligatoirement en minuscule toute chaine de caractère)
If LCase(Target.Value) = "quali" Then
'on test le nom des feuilles et si on la trouve alors Trouv = True
For Each Sheet In Sheets
If Sheet.Name = Onglet Then
Trouv = True
Exit For
End If
Next
'Si on l'a trouvé on l'affiche sinon il faut la créer
If Trouv = True Then
Sheets(Onglet).Visible = True
Else
'on copie la feuille Model en dernier
Sheets("MODELCOMPQUALI").Visible = True
Sheets("MODELCOMPQUALI").Copy After:=Sheets(Sheets.Count)
Sheets("MODELCOMPQUALI").Visible = False
'on renomme cette derniere
Sheets(Sheets.Count).Name = Onglet
Sheets(Sheets.Count).Visible = True
End If
Else
For Each Sheet In Sheets
If Sheet.Name = Onglet Then
Trouv = True
Exit For
End If
Next
'Si on l'a trouvé on l'affiche sinon il faut la créer
If Trouv = True Then
Sheets(Sheets.Count).Visible = True
End If
End If
End If
End If
End Sub |
Il fonctionne si au départ de l'utilisation les onglets MODELCOMPA QUANTI ET MODELCOMPAQUALI ne sont pas cachés , mais je souhaiterai pouvoir les cacher dès le début mais dans ce cas les onglets créés ne sont pas bons . Création du dernier onglet et non pas des onglets qui intéressement .
Je ne trouve pas l'erreur, mais je ne suis pas très douée...
Si quelqu'un peut m'aider
Je vous joins en pj mon tableur