Récupérer valeur texte en fonction autre valeur texte + incrémentation auto

Bonjour,

Je travaille actuellement sur le fichier Liste des libellé et exigences - Copie

Ce fichier fait suite à un audit. En effet, en face de chaque libellé (feuille1 colonneC) se trouve un statut de conformité.

J'aimerais récupérer certaines données de la feuille 1 colonne C en fonction de leur statut PF/PP/OC/PS/NC, pour les répertorier dans des listes spécifiques (Exemple Feuille 3 DM). Ces listes spécifiques ont pour but de répertorier les libellés qui répondent aux critères. Le must serait que ces données s'implémentent automatiquement dans les listes spécifiques.

J'ai quelques bases en Excel et très très peu en VBA, si cela pouvait être en Excel.

Vous trouverez 2 fichiers pour ce post :

1) Mon fichier de travail : Liste des libellé et exigences - Copie.

  • Feuille 1 : Exigences et statut
    Feuille 2 : Trame du document dans lequel j'aimerais listé les infos et les incrémenter automatiquement
    Feuille 3 : Exemple de rendu

2) Un fichier pour simplifier la compréhension : Extrait

18extrait.xlsx (15.19 Ko)

// Dans ce fichier, j'ai tenté d'expliquer mon état de base et le résultat espéré/attendu.

Dans l'attente, j'espère avoir été claire

Merci !!

bonjour

un essai pour amorcer

28tiana.xlsx (19.11 Ko)

cordialement

Bonjour Tiana, Tulipe, bonjour le forum,

Une proposition VBA pour le le fichier Extrait :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Set O = Worksheets("Feuil1") 'définit l'onglet O
TV = O.Range("B5").CurrentRegion 'définit la tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 3 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la 3ème)
    D(TV(I, 2)) = "" 'alimente le dictionnaire D avec les données en colonne 2 de TV (Constat)
Next I 'prochaine ligne de la boucle
TMP = D.keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les éléments J du tableau temporaire TMP
    Erase TL: K = 1 'vide le tableau TL, initialise la variable K
    For I = 3 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la 3ème)
        If TV(I, 2) = TMP(J) Then 'condition : si la donnée ligne I colonne 2 de TV est égale à l'élément J de TMP
            ReDim Preserve TL(1 To 3, 1 To K) 'redimensionne le tableau des lignes TL (3 lignes, K colonnes)
            TL(1, K) = TMP(J) 'récupère le [Constat] dans la ligne 1 du tableau des lignes TL
            TL(2, K) = K 'récupère K dans la ligne 2 du tableau des lignes TL
            TL(3, K) = TV(I, 1) 'récupère le [Libellé] dans la ligne 3 du tableau des lignes TL
            K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 1
    Set DEST = O.Cells(Application.Rows.Count, "I").End(xlUp).Offset(3, 0) 'définit la cellule de destination DEST
    DEST.Value = "Tableau " & J + 1 'écrit dans DEST
    DEST.Offset(0, 2).Value = "Libellé" 'écrit dans DEST décalée de deux colonnes à droite
    DEST.Offset(1, 0).Resize(UBound(TL, 2), 3).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé dans DEST décalée d'une ligne en-dessous et redimensionnée
Next J 'prochain élément de la boucle 1
End Sub

Bonjour Tulipe et Tauthème,

En effet, Tulipe, vos formules fonctionnent à pic !

J'ai réussi à récuperer les données comme voulu !

Merci encore !

Tauthème, merci pour votre VBA ! Je ne me débrouille pas très bien en VBA, j'ai préféré la solution de faciliter ... Merci encore tout de même !

Rechercher des sujets similaires à "recuperer valeur texte fonction incrementation auto"