Fonction conditionnelle

Bonjour à tous,

Après avoir passé plusieurs heures à chercher une solution à mon problème, en vain, je me tourne vers une communauté de connaisseurs!

Voici le contexte :

- J'ai une feuille 1 qui contient un tableau qui comprend une colonne "action" et une colonne "stade" où j'affecte un stade (stade 1, stade 2, stade 3).

- J'ai une feuille 2 qui contient plusieurs tableaux ( un tableau stade 1, un tableau stade 2 et un tableau 3)


Mon objectif :
j'aimerais que toutes les lignes de la feuille 1 qui ont comme stade le "stade 1", se chargent dans le "tableau stade 1" de la feuille 2. Je souhaiterais la même chose pour les stade 2 et stade 3.

J'aimerais trouver une fonction qui automatise se mécanisme dès lors que j'ajoute une nouvelle ligne dans la feuille 1.

Est-il possible de faire ceci sur Excel?

En espérant que vous ayez la réponse,

Merci d'avance pour votre aide!

Bonjour

Tu devrais joindre ton fichier...

Bye !

Très bien. Je vous joins un tableau exemple pour illustrer mes propos.

Merci du tips :)

Bonsoir, un exemple avec la rechercheV

bonsoir

une contribution

8lraynal.xlsx (24.21 Ko)

Un peu plus travaillé et essaye de ne pas mettre des "espaces" après tes phrases,car je trouvais NA qui n'avaient pas lieu d'être !!

Bonjour,
Une autre proposition Excel 365 +.
Cdlt.

1lraynal-v2.xlsx (21.51 Ko)

Bonjour à tous,

Merci pour vos contributions vous êtes géniaux! En revanche, je me suis rendue compte que j'avais trop simplifié mon explication, et que ma demande n'est pas assez claire... La réalité de ma demande est un peu plus complexe car j'ai besoin que mes tableaux s'alimentent automatiquement.

Je vais donc redéfinir mon besoin, en l'illustrant avec l'actuel tableau que j'utilise. Vous pourrez trouver le tableau en pièce-jointe.

Mon objectif :

  • Je souhaiterais que toutes les lignes du tableau global ( feuille Action list mutualisée) dont la phase est "Chantiers transverses" ----------------------------------> alimentent automatiquement le tableau T_1 (chantiers transverses) dans la feuille Action list 2021.
  • Je souhaiterais que toutes les lignes du tableau global (feuille Action list mutualisée) dont le step est "Iteration 1 - Design" ou "Iteration 1 - Build" ou "Iteration 1 - Test" --------------------------------> alimentent automatiquement le tableau T_4 ( Itération 1) dans la feuille Action list 2021.

Voici donc deux exemples de mes objectifs d'alimentation automatique.

Ci-dessous, vous trouverez la liste complète des conditions d'alimentation que j'aimerais fixer :

Vous pouvez lire le tableau de la manière suivante : Action list mutualisée selon le step/ou la phase--> aliment les différents tableaux action list selon les conditions suivantes:

Action list mutualisée

Action list 2021

Phase = Chantiers transverses

T_1 (Chantiers transverses)

Step = "9. Project Management"

T_2 (Project Management)

Step = "09. Pre embarquement"

T_3 (Preparation)

Step = "09. Preparation"

T_3 (Preparation)

Step = "Iteration 1 - Design"

T_4 ( Itération 1)

Step = "Iteration 1 - Build"

T_4 ( Itération 1)

Step = "Iteration 1 - Test"

T_4 ( Itération 1)

Step = "Iteration 2 - Design"

T_5 (Itération 2)

Step = "Iteration 2 - Build"

T_5 (Itération 2)

Step = "Iteration 2 - Test"

T_5 (Itération 2)

Step = " 30. UAT"

T_6 (UAT)

Step = " 40. Production / cutover"

T_7 (Production/cutover)

Step = " 50. Hypercare"

T_8 (Hypercare)

Step = "60. Run"

T_9 (Run)

Auriez-vous une solution à mon problème?

P.S : J'ai essayé avec la solution de Jean-Eric (en ligne 5 du fichier joint, feuille action list mutualisée) qui me paraissait la plus adaptée, mais je crains que cette formule ne permette pas d'ajouter des lignes dans le tableaux T_1, si des lignes sont ajoutées dans le tableau mutualisé. Merci beaucoup tout de même!

Encore merci pour vos contributions. Merci d'avance si de nouvelles solutions vous viennent en tête!

Merci,

Léna

Bonjour le fil, bonjour le forum,

Un début avec la macro ci-dessous :

Sub Macro1()
Dim OM As Worksheet 'déclare la variable OM (Onglet ...Mutualisée)
Dim OL As Worksheet 'déclare la variable OL (Onglet ...List)
Dim TM As ListObject 'déclare la variable TM (Tableau structuré Mutualisé)
Dim T1 As ListObject 'déclare la variable T1 (Tableau structuré 1)
Dim T4 As ListObject 'déclare la variable T4 (Tableau structuré 4)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R1 As Range 'déclare la variable R1 (Recherche 1)
Dim R2 As Range 'déclare la variable R2 (Recherche 2)
Dim L1 As Integer 'déclare la variable L1 (Ligne 1)
Dim L2 As Integer 'déclare la variable L2 (Ligne 2)

Set OM = Worksheets("Action list mutualisée") 'définit l'onglet OM
Set OL = Worksheets("Action List 2021") 'définit l'onglet OL
Set TM = OM.ListObjects(1) 'définit le tableau structuré TM
TV = TM.DataBodyRange 'définit la tableau des valeurs TV
Set T1 = OL.ListObjects("T_1") 'définit le tableau structuré T1
Set T4 = OL.ListObjects("T_4") 'définit le tableau structuré T4
For I = 1 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs TV
    If TV(I, 1) = "Chantiers transverses" Then 'condition 1 : si la donnée ligne I colonne 1 de TV est égale à "Chantiers transverses"
        Set R1 = T1.ListColumns(1).Range.Find("") 'définit la recherche R1 Recherche du vide dans la colonne 1 de T1
        If R1 Is Nothing Or T1.ListRows.Count = 0 Then 'condition 2 : s'il n'y a aucune occurrence trouvée ou si T1 ne contient aucune ligne
            Rows(T1.ListRows.Count + T1.HeaderRowRange.Row + 1).Insert 'insère une ligne juste avant T2
            T1.ListRows.Add 'ajoute une ligne à T1
            L1 = T1.ListRows.Count 'définit la ligne L1
        Else 'sinon (condition 2)
            L1 = R1.Row - T1.HeaderRowRange.Row 'définit la ligbne L1 (la ligne de la première occurrence trouvé moins la ligne des en-têtes de T1)
        End If 'fin de la condition 2
       TM.ListRows(I).Range.Copy T1.DataBodyRange(L1, 1) 'copie la ligne I de TM et la colle dans la cellule ligne L1 colonne 1 des données de T1
    End If 'fin de la condition 1
    If InStr(1, TV(I, 6), "Iteration 1", vbTextCompare) <> 0 Then 'condition 1 : si la donnée ligne I colonne 6 de TV contient le texte "Iteration 1"
        Set R2 = T4.ListColumns(1).Range.Find("") 'définit la recherche R2 Recherche du vide dans la colonne 1 de T4
        If R2 Is Nothing Or T4.ListRows.Count = 0 Then 'condition 2 : s'il n'y a aucune occurrence trouvée ou si T4 ne contient aucune ligne
            Rows(T4.ListRows.Count + T4.HeaderRowRange.Row + 1).Insert 'insère une ligne juste avant T5
            T4.ListRows.Add 'ajoute une ligne à T4
            L2 = T4.ListRows.Count 'définit la ligne L2
        Else 'sinon (condition 2)
            L2 = R2.Row - T4.HeaderRowRange.Row 'définit la ligbne L2 (la ligne de la première occurrence trouvé moins la ligne des en-têtes de T4)
        End If 'fin de la condition 2
       TM.ListRows(I).Range.Copy T4.DataBodyRange(L2, 1) 'copie la ligne I de TM et la colle dans la cellule ligne L2 colonne 1 des données de T4
    End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle
End Sub

Merci beaucoup à tous !

ça fonctionne parfaitement :)

J'ai finalement utilisé les requêtes pour connecter mes différents tableurs Excel.

Pour un tableau qui se trouve dans le même classeur :

1. J'ai nommé mes tableaux.

2. puis Données --> obtenir des données --> à partir d'autres sources --> requête vide

3. Dans la barre de formule, insérer --> = Excel.CurrentWorkbook()

4. Sélectionner les tableaux choisis

5. Double cliquer sur la double flèche "content" pour sélectionner les colonnes choisies du tableau

6. Puis cliquer sur "Fermer et charger"

Pour un tableau qui se trouve dans un autre classeur :

1. J'ai nommé mes tableaux

2. puis Données --> obtenir des données --> à partir d'un classeur --> Sélectionner un classeur

A dispo si besoin :)

Rechercher des sujets similaires à "fonction conditionnelle"