Afficher résultat selon configuration de 2 cellules

Bonjour le forum,

J'aurai besoin d'un petit coup de main sur vba

Je vous joins le fichier en espérant être clair dans mes explications

Je prends mon tableau en exemple

Dans la colonne A j'ai des libellés

Dans la colonne B c'est un choix si QI est vrai il y a un X

Dans la colonne C c'est un choix si QO est vrai il y a un X

et je souhaite avoir un le résultat en colonne D c'est a dire s'il y a un libellé en A et un en choix en B alors on écrit TI_ ect... si c'est un choix en C alors on écrit TF_ ect...

Cependant ma demande porte sur si on a la même configuration dans le tableau le résultat en D devrait être identique

Si en ligne 2 on a libellé = A et choix QI = X en Résultat = TI_1

Si en ligne 12 on a libellé = A et choix QI = X en résultat = TI_1 (J'ai un résultat = TI_6)

et j'aimerai que cela marche qu'importe le nombre de ligne et qu'importe la configuration soit choix QI soit choix QO

en espérant que cela soit possible.

Merci d'avance

Bien cordialement,

Micka

Bonjour

Un essai à tester. Te convient-il ?

Option Explicit

Dim tablo, dico As Object
Dim i&, k&

Sub TestGMB()

    tablo = Range("A1").CurrentRegion
    Set dico = CreateObject("Scripting.Dictionary")

    k = 0
    For i = 2 To UBound(tablo, 1)
        If Not dico.exists(tablo(i, 1)) Then
            'dico(tablo(i, 1)) = dico(tablo(i, 1)) + 1
        'Else
            dico(tablo(i, 1)) = 1 + k
            k = k + 1
        End If
    Next i

    For i = 2 To UBound(tablo, 1)
        If UCase(tablo(i, 2)) = "X" Then
            tablo(i, 4) = "TI_" & dico(tablo(i, 1))
        ElseIf UCase(tablo(i, 3)) = "X" Then
            tablo(i, 4) = "TF_" & dico(tablo(i, 1))
        Else
            tablo(i, 4) = ""
        End If
    Next i
    Range("A1").CurrentRegion.ClearContents
    Range("A1").Resize(UBound(tablo, 1), 4) = tablo
End Sub

Bye !

MERCI infiniment cela fonctionne comme je le souhaite

Peux tu m'expliquer stp

Bien cordialement,

Mika

macro commentée :

Option Explicit

Dim tablo, dico As Object
Dim i&, k&

Sub TestGMB()

    tablo = Range("A1").CurrentRegion                   'On met toutes les données du tableau dans une variable tableau
    Set dico = CreateObject("Scripting.Dictionary")     'On crée un dictionnaire

    k = 0                                               'on crée une varoabme qu'on initialise à zéro
    For i = 2 To UBound(tablo, 1)                       'on passe toutes les lignes de tablo
        If Not dico.exists(tablo(i, 1)) Then            'on met dans le dictionnaire chaque nouveau nom de la colonne A
            dico(tablo(i, 1)) = 1 + k                   'et on lui donne la valeur k incrémentée de 1
            k = k + 1                                   'on incrémente k
        End If
    Next i

    For i = 2 To UBound(tablo, 1)                       'On passe à nouveau toutes les valeurs de la colonne A
        If UCase(tablo(i, 2)) = "X" Then                'Si la 2° colonne de la ligne a pour valeur "X" ou "x"
            tablo(i, 4) = "TI_" & dico(tablo(i, 1))         'alors la valeur la 4" colonne vaudra "TI_" suivi de la valeur
                                                            'dans le dictionnaire associé au nom de la ligne en colonne A
        ElseIf UCase(tablo(i, 3)) = "X" Then            'Sinon si la 3° colonne de la ligne a pour valeur "X" ou "x"
            tablo(i, 4) = "TF_" & dico(tablo(i, 1))         'alors la valeur la 4" colonne vaudra "TF_" suivi de la valeur
                                                            'dans le dictionnaire associé au nom de la ligne en colonne A
        Else
            tablo(i, 4) = ""                            'sinon (dans tout autre cas), la valeur de la 4° colonne de la
                                                        'ligne sera vide
        End If
    Next i
    Range("A1").CurrentRegion.ClearContents             'on initialise la plage qui va recevoir le tableau de résultats
    Range("A1").Resize(UBound(tablo, 1), 4) = tablo     'On reporte sur la feuille le tableau de résultats
End Sub

Bye !

Bonjour

J'ai un soucis avec le code que j'essaie de configurer par rapport à mon tableau d'origine

Je n'y arrive pas

J'ai essayer de modifier les colonnes car mes colonnes sont comme dans le nouveau fichier joint

Merci d'avance

Mika

Bonjour

Nouvelle version.

Bye !

Merci beaucoup !!!!

Gmb, j'ai encore un petit soucis

quand je lance la macro tous s'efface (peut être parce que tout le tableau est rempli habituellement et commence en ligne 9)

désolé ... je te joins un fichier

Nouvelle version

Bye!

Bonjour,

Encore merci.

Cependant j'ai vu une petite coquille

a partir de la ligne 12 j'ai un décalage dans les numéros je t'envoie le fichier avec le résultat attendu

de plus est il possible de rajouté un 0 quand les chiffres sont inférieur à 10 ?

Bien cordialement,

Mika

Bonjour

Désolé mais je crois que je n'ai rien compris à ce que tu demandes....

Bye !

Bonjour,

En fait ce que j'aimerai c'est cela

Sur la première ligne du tableau au lieu d'afficher TI_1 mettre TI_01 (tant que le chiffre est inférieur à 10, s'il est supérieur mettre TI_10)

Après sur la quatrième ligne du tableau on a TF_3 alors que dans les lignes précédente on a pas de TF_2, donc dans l'ordre on passe de TF_1 à TF_3 cependant j'aimerai avoir un ordre 1, 2, 3 ect ...

En espérant avoir été plus clair (sinon dans le fichier joint du message précédent j'ai ajouté une colonne résultat attendu (c'est ce que j'aimerai obtenir) en colonne O)

Merci de ton aide.

Mika

Bonjour,

Ce que je cherche a réaliser est peut etre impossible; je ne sais pas.

bien cordialement,

Mika

Rechercher des sujets similaires à "afficher resultat configuration"