Boucle en fonction valeur de plusieurs cellule en fonction d'une arborescen

Bonjour à tous,

J'ai besoin d'aide pour créer une boucle.

Très simplement, je souhaite dupliquer des tableaux de bord en fonction d'une arborescence.

J'ai déjà une macro pour création d'onglets automatiques.

Mes onglets se présentent sous le même format (onglet maquette). In fine j'aurai un onglet par agence.

Une agence contient plusieurs services et je souhaiterai que en cellule b90/b100/b110 .... avoir selon la table, les services qui se collent dans ces onglets en fonction de ma cellule B2.

Par exemple :

Onglet AG001 cellule B2= AG001

# Cellule B90 = Se001

# Cellule B100 = Se002

#Cellule B110 = Se003

Pouvez vous m'aider ... ?? merci

Salut,

Sur la base de ton exemple, ma macro cherche vers le bas, depuis la cellule B5 de la feuille ''TABLE'', les données qui commencent pas ''Ag''. Si c'est le cas, elle cherche si cette feuille existe déjà (comme dans mon exemple, la feuille ''Ag001" existe). Si la feuille existe déjà, on passe plus loin, autrement une nouvelle feuille est créée et les trois premières données en-dessous du nom de l'agence (par exemple Info 1 à 3 pour l'agence ''Agrrrrr'') sont reportées dans les cellules B90, B100 et B110 de la feuille nouvellement créée.

Amicalement.

Re bonjour,

C'est franchement pas mal.

Je vais voir comment l'insérer au mieux dans mes lignes de code mais c'est une super base pour moi.

Merci Beaucoup !!!!!

Je reviens vers vous dès que j'ai avancé =)

Rebonjour,

J'ai bien testé et adapté le code à ma solution.

Parcontre j'ai une question concernant les boucles et les si ...

Je souhaite que lorsque dans la liste, si la cellule commence par AG, on recommence la procédure. En effet, pour l'instant j'ai bien une feuille par agence avec le numéro de l'agence en B2.

Je ne sais pas si il faut que je fasse une boucle ou si un IF THEN ELSE END IF suffirait ...

[

Sub Duplicata()
Dim i As Integer, j As Integer

Application.ScreenUpdating = False

For i = 6 To Range("M" & Rows.Count).End(xlUp).Row
    If Left(Range("M" & i), 2) = "AG" Then
        For j = 1 To Sheets.Count
            If Sheets(j).Name = Range("M" & i) Then
                GoTo Etiquette
            End If
        Next j
    Else
        GoTo Etiquette
    End If

    Sheets("Maquette").Copy after:=Sheets(Sheets.Count)
    With Sheets("Tables")

        ActiveSheet .Name = .Range("M" & i)
        ActiveSheet.Range("B2") = .Range("M" & i)
        ActiveSheet.Range("B85") = .Range("M" & i + 1)
        ActiveSheet.Range("B105") = .Range("M" & i + 2)
        ActiveSheet.Range("B125") = .Range("M" & i + 3)
        ActiveSheet.Range("B145") = .Range("M" & i + 4)
        ActiveSheet.Range("B165") = .Range("M" & i + 5)
        ActiveSheet.Range("B185") = .Range("M" & i + 6)

    End With

    Sheets("Tables").Activate

Etiquette:

Next i

End Sub

Pouvez vous m'aider?

Sans avoir ton fichier réel - ou du moins une copie conforme - il est difficile de t'aider.

Dans le passage ci-dessous, tu affectes la valeur de la cellule M & i de la feuille ''Tables'' comme nom de la feuille active (celle qui vient d'être créée). Dans le fichier que tu m'as transmis, il n'y a rien dans la colonne M de la feuille ''Tables''. C'est impossible de savoir si tu fais une erreur ou si dans ton fichier réel il y a quelque chose dans cette colonne M.

    Sheets("Maquette").Copy after:=Sheets(Sheets.Count)
    With Sheets("Tables")

        ActiveSheet .Name = .Range("M" & i)

Je souhaite que lorsque dans la liste, si la cellule commence par AG, on recommence la procédure. En effet, pour l'instant j'ai bien une feuille par agence avec le numéro de l'agence en B2.

Je ne comprends absolument pas ta demande ci-dessus. Quel serait le but de recommencer la procédure ? Selon moi ça ne fait pas sens, il faut probablement continuer ou adapter la procédure.

Je ne sais pas si il faut que je fasse une boucle ou si un IF THEN ELSE END IF suffirait ...

Afin de réaliser quoi ?

Soit plus clair dans ce que tu souhaites réaliser et fournis-moi un fichier correct.

Amicalement.

Désolé pour la clarté de mes explications.

Ci joint le fichier.

Lors de la création de mes ONGLETS (bouton de la macro dans la feuille liste ou macro duplicata), je voudrais que si dans ma liste j'arrive à une agence, passer à la crétion de la deuxième feuille.

Pour exemple:

Dans la feuille "F.AG0004" en cellule b145 j'ai l'AG0003 qui s'affiche. Hors, j'aimerais que lorsque je tombe sur une nouvelle AG mon code me crée la seconde feuille comme il le fait bien sans me saisir le reste de mon arborescence. En effet, je ne veux voir apparaître dans les onglets B85/105/125/145/165/185 que les services associés à mon agence. Si je n'ai que un service dans mon AG0004 je ne veux avoir que la valeur de mon service dans la cellule B85 de ma feuille.

Est ce que je suis plus explicite?

Merci de votre aide

La solution dans le fichier ci-joint.

J'en profite pour te montrer qu'un fichier démo peut être allégé en supprimant toutes les feuilles inutiles à la démo et que peu d'exemples, mais représentatifs du problème, suffisent. Dans cet exemple précis, il n'y a ainsi pas besoin d'effacer 36 nouvelles feuilles créées afin de faire un prochain essai.

Je n'ai pas compris tes saisies dans la ligne 701 de la feuille Tables, dans les colonnes L à U.

Amicalement.

Ok je me note cela

Par contre j'ai bien compris mais je souhaite que cela se vérifie sur les autres activesheet.range.

Après avoir lancé la procédure sur la feuille F.AG0004 en cellule B145 je retrouve la données AG0003 hors je voudrais que cette cellule et les suivantes renvoient un vide. si je duplique la même métode à savoir :

If Left(.Range("M" & i + 2), 2) <> "AG" Then
            ActiveSheet.Range("B105") = .Range("M" & i + 2)
        Else
            GoTo Etiquette
        End If[code]

       sur:

        [code]ActiveSheet.Range("B125") = .Range("M" & i + 3)
        ActiveSheet.Range("B145") = .Range("M" & i + 4)
        ActiveSheet.Range("B165") = .Range("M" & i + 5)
        ActiveSheet.Range("B185") = .Range("M" & i + 6)

Est ce que cela va fonctionner? et est ce qu'il n'existe pas un procédé plus rapide en faisant une boucle ?

Désolé j'espère être le plus clair possible mais je débute.

Merci beaucoup de votre aide car pour l'instant ça me permet de bien avancer

Fallait dire que tu voulais une boucle !

Non, plaisanterie mise à part, j'ai été un peu vite la première fois.

Je crois que c'est maintenant bon.

Amicalement.

Oh !!!!!!! c'est trop bien =)

merci beaucoup je vais étudier le code pour voir si je comprends bien toutes les étapes.

c'est super en tout cas c'est exactement mon souhait.

Merci merci merci

Rechercher des sujets similaires à "boucle fonction valeur arborescen"