VBA - Générer aléatoirement des jours / Création de pages sur conditions
Bonsoir,
Je suis encore débutant en VBA et j'ai deux questions :
- Comment générer un jour aléatoire (du lundi au dimanche) sur une plage contenue sur une ligne, tant que la ligne supérieure n'est pas vide ? => Autrement dit si ma ligne supérieure est remplie sur 5 cases => indiquer 5 fois sur la ligne inférieure le jour de la semaine aléatoire.
Exemple : Si O2 à U2 non vide => O3 Lundi / P3 Dimanche, etc....
- Pour chaque cellule contenant un mot accompagné d'un chiffre : comment faire pour créer un onglet pour chaque cellule contenant ce mot et inscrire ce mot dans le titre des feuilles créées :
Exemple : Types de chocolats / Chocolat_1 / Chocolat_2 / Chocolat_3 => Comment créer un onglet pour chaque "Chocolat_x" où x est un nombre pouvant varié selon le nombre de "Chocolat_" ?
=> Création 1er onglet ayant pour titre Chocolat_1 / 2ème Chocolat_2 / etc.
Merci de votre aide !
Bonjour,
Pour les jours aléatoires, regardes ce post :
https://forum.excel-pratique.com/viewtopic.php?f=2&t=124167
Pour la seconde demande, une piste :
Sub Test()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim T
'défini la plage de A1 à A10 (à adapter)
Set Plage = Range("A1:A10")
For Each Cel In Plage
'si il y a un chiffre ou nombre en fin de nom...
If IsNumeric(Split(Cel.Value, "_")(1)) Then
'...contrôle si la feuille existe ou pas, si elle n'existe pas
'elle est créée
If FeExiste(Cel.Value) = False Then
Set Fe = Worksheets.Add(, Sheets(Sheets.Count))
Fe.Name = Cel.Value
End If
End If
Next Cel
End Sub
Function FeExiste(Feuille As String) As Boolean
Dim Fe As Worksheet
For Each Fe In Worksheets
If Fe.Name = Feuille Then FeExiste = True: Exit Function
Next Fe
End FunctionBonjour Theze,
- Pour le premier point tout est ok ! Merci beaucoup !
- J'ai mal précisé ma question sur le 2ème point avec la création des feuilles pour chaque "Chocolat_x" :
=> Lors de la création de chaque feuille Chocolat_1 / Chocolat_2, etc :
=> Existe-il une formule en VBA pour inscrire le nom de chaque "Chocolat_x" dans une case (A1 par exemple) ayant pour nom "Chocolat_x" et surlignée en jaune cette même case.
====> EXEMPLE : pour "Chocolat_1" on souhaite obtenir une feuille nommée Chocolat_1 avec en A1 sur cette même feuille le nom "Chocolat_1" et cette case A1 surlignée en jaune. Le but est de répété le processus pour chaque feuille "Chocolat_x" créée.
=> Enfin dans la formule que vous m'avez donné pour renommer les feuilles créées pour chaque chocolat :
Set Fe = Worksheets.Add(, Sheets(Sheets.Count))
Fe.Name = Cel.Value
=> Existe-il une formule pour "Fe.Name" qui permet la concaténation de la valeur de la cellule (Cel.Value) précédée de la date du jour
exemple : Pour la feuille créée pour Chocolat_1 on souhaite obtenir : Mai, 6-Chocolat_1 / Feuille Chocolat_2 = Mai, 6-Chocolat_2 / etc..
Merci beaucoup pour votre aide et très bonne journée !!