Identifier cellule d'une ligne = 1 + & l'entete

Bonjour,

J'aurai besoin de votre aide car je ne trouve pas l'info sur internet....

J'ai un tableau qui rassemble des procédures qui sont affectées à des postes d'atelier.

Toutes les procédures sont en lignes, et sur chaque colonne je mets le nom des postes de l'atelier.

Pour les affectées je renseigne un 1 dans les colonnes concernées.

Je cherche un formule, je ne sais pas si je dois passer par du VBA, pour insérer dans la dernière colonne du tableau, une concaténation de toutes les entêtes (postes) où la ligne est affectée.

Par exemple:

J'ai 3 postes (cellules A2;B2;C2):

  • Débit
  • Usinage
  • Montage

La première procédure (ligne) est Gestion Débit et Usinage (A3) => je renseigne "1" dans A3;B3

Sur ma cellule D3, je voudrais voir: "Affectée à Débit ; Usinage".

La procédure suivante (ligne suivante A4): Montage => Je renseigne un "1" dans C3

"Montage", je voudrais voir en D4 "Affectée à Montage".

Le tableau est un peu plus grand que ca.

Des idées ?????

Bonjour,

Formule suivante en D3 et à copier vers le bas :

=SI(SOMME(A3:C3)>0;"Affecté à : ";"") & SI(A3=1;$A$2;"")&" "& SI(B3=1;$B$2;"")&" "& SI(C3=1;$C$2;"")

merci Raja,

Mais le tableau est boucoup trop grand pour faire comme cela ! J'ai créé environ 80 postes donc colonnes et je pensais en laisser des vierges...

bonjour,

Je ne sais pas si c'est possible en dehors de vba, mais voici une solution !

C'est une fonction VBA assez simple à mettre en place.

Je te laisse juger par toi même avec le fichier joint !

a plus

9classeur1.xlsm (17.94 Ko)

Re,

Voir PJ. A tester.

7etape-usine.xlsm (22.67 Ko)

Salut,

merci sa marche très bien !!

Quelles paramètres doivent être modifier pour l'emplacement du début et la colonne choisie pour les résultats ?

je n'arrive pas à comprendre la macro !!!

Re,

A qui tu poses la question ? Il y avait eu 2 solutions proposées.

Pardon, je n'avais pas vu ta réponse Raja !!

Ton fichier marche très bien également, le code de Braters semble plus court mais je ne sais pas faire la différence.

Peut tu m'expliquer la démarche pour modifier les lignes et colonnes de début pour l'une des deux solutions ?

Re,

Avec la partie surlignée pour adaptation, le reste est déjà automatisé :

Sub concatener()
    Dim i As Long, j As Long, derLig As Long, derCol As Integer, phrase As String
    derLig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    ' 2 => ligne entête à modifier si besoin est
    derCol = Cells(2, Columns.Count).End(xlToLeft).Column
    phrase = "Affecté à :"
    ' 3 => première ligne de traitement à modifier si besoin est
    For i = 3 To derLig
        For j = 1 To derCol
            If Cells(i, j) = 1 Then
                ' 2 => ligne entête à modifier si besoin est
                phrase = phrase & " " & Cells(2, j)
            End If
        Next j
        If WorksheetFunction.Sum(Range(Cells(i, 1), Cells(i, j))) > 0 Then
            Cells(i, derCol + 1) = phrase
        Else
            Cells(i, derCol + 1) = ""
        End If
        phrase = "Affecté à :"
    Next i
End Sub

Concernant ma formule, remplacer les 1 où il y a un commentaire par le numéro de ligne de tes en-têtes.

Function Affectation(affecter As Range)

dercol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column 'ici changer le 1
i = 0
    For Each cel In affecter
        r = cel.Row
        c = cel.Column
        If cel = 1 Then
            If i = 0 Then
                Affectation = "Affectée à " & Cells(1, c) 'ici changer le 1
                i = 1
            Else
                Affectation = Affectation & " ; " & Cells(1, c) 'ici changer le 1
            End If
        End If
    Next cel

End Function

A toi de voir si tu préfères appuyer sur un bouton ou bien faire glisser une formule.

A plus

J'ai finalement opté pour la version de raja car je galère à utiliser la tienne Braters

Raja, comment je peux faire pour commencer cette macro uniquement à partir de la colonne X ?

Les colonnes d'avant me servent à mettre d'autres infos... Et faussent les résultats.

Re,

Si tu avais précisé ta demande depuis le début...

Change les valeurs de 2 variables surlignés et teste.

Option Explicit
Sub concatener()
    Dim i As Long, j As Long, derLig As Long, derCol As Integer, phrase As String, debLig As Integer, debCol As Integer
debLig = 2 ' 1ère ligne du tableau (ligne entête) à changer si besoin est
    debCol = 1 ' 1ère colonne du tableau à changer si besoin est
    derLig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    derCol = Cells(debLig, Columns.Count).End(xlToLeft).Column
    phrase = "Affecté à :"
    For i = debLig + 1 To derLig
        For j = debCol To derCol
            If Cells(i, j) = 1 Then
                phrase = phrase & " " & Cells(debLig, j)
            End If
        Next j
        If WorksheetFunction.Sum(Range(Cells(i, debCol), Cells(i, j))) > 0 Then
            Cells(i, derCol + 1) = phrase
        Else
            Cells(i, derCol + 1) = ""
        End If
        phrase = "Affecté à :"
    Next i
End Sub

Super , Désolé hier soir je n'ai pas pris le temps de regarder ta solution.

Ca marche très bien, mon fichier est terminé !!

Merci beaucoup et désolé pour les allés-retours;

Sujet clos.

Rechercher des sujets similaires à "identifier ligne entete"