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 Function

Bonjour 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 !!

Rechercher des sujets similaires à "vba generer aleatoirement jours creation pages conditions"