Microsoft 365 Recherche premiere valeur dans Colonne

Faroyo

XLDnaute Junior
Bonjour,

je bloque sur deux problématiques, je sèche complètement et plus je passe de temps moins j'y arrive.
Je fais donc appel à vos talents pour m'en sortir.

1er pb:
J'aimerai en colonne "P" pouvoir afficher le nom de la prochaine Form "Colonne B" qui utilise soit "LM_1" soit "LM_2"
Je m'explique. Dans le fichier joint, ma premiere prod est "EF1381 sur LM_1", la prochaine utilisant "LM_1" sera "GF2662" en "B9".
Pour "LM_2" ma premiere prod est "EF1512" en "B6' et la suivante sera "Garlon Inov" en "B21"
J'aimerai si possible pouvoir renvoyer par exemple la valeur de B9 en P3, la valeur B21 en P3, la valeur B12 en P9, la valeur B15 en P12 et ainsi de suite.

2 iem pb.
J'ai des formules Excel en colonnes "J" et "M" que j'aimerai convertir en vba.

J’espère que l'un de vous pourra m'aider à résoudre cela.

Je vous joint un fichier test.

Merci pour votre aide
 

Pièces jointes

  • Misene forme.xlsm
    553.2 KB · Affichages: 8
Solution
Voici un exemple de code qui fonctionne (il n'est pas optimisé mais fait le travail demandé) :
VB:
Sub test()
Dim a As Integer
Dim i As Integer
Dim j As Integer
Dim l As Integer

For i = 2 To 118
    a = 0
    l = 0
    For j = i + 1 To 119
        If Range("I" & i) = Range("I" & j) Then
            a = a + 1
            If a = 1 Then
                l = j
            End If
        End If
    Next j
    If a > 0 Then
        Range("J" & i).Value = Range("E" & l).Value
    Else
        Range("J" & i).Value = "Affectation non définie"
    End If
Next i

End Sub

JHA

XLDnaute Barbatruc
Bonjour à tous,

Pour le premier point:
A essayer cette formule matricielle en "P2"
VB:
=SI(B2="";"";SIERREUR(INDEX($B2:$B$118;PETITE.VALEUR(SI($C1:$C$117=$C1;LIGNE($B2:$B$118)-(LIGNE()-1));2));""))

Copier vers le bas

Pour le second point, désolé, je ne sais pas faire.

JHA
 

Pièces jointes

  • Misene forme.xlsm
    557.8 KB · Affichages: 4

Nairolf

XLDnaute Accro
Salut JHA et Faroyo,

Comme j'ai aussi cherché, je mets aussi ma solution (qui similaire à celle de JHA).
Après avoir fusionné les cellules P2 à P4, mettre la formule suivante (à recopier ensuite vers le bas) :
Code:
=SIERREUR(INDEX($B:$B;PETITE.VALEUR(SI(C2=C5:$C$118;LIGNE(C5:$C$118)+1;"");1);1);"")

Pour le vba, je vais jeter un œil.
 

Nairolf

XLDnaute Accro
Voici un exemple de code qui fonctionne (il n'est pas optimisé mais fait le travail demandé) :
VB:
Sub test()
Dim a As Integer
Dim i As Integer
Dim j As Integer
Dim l As Integer

For i = 2 To 118
    a = 0
    l = 0
    For j = i + 1 To 119
        If Range("I" & i) = Range("I" & j) Then
            a = a + 1
            If a = 1 Then
                l = j
            End If
        End If
    Next j
    If a > 0 Then
        Range("J" & i).Value = Range("E" & l).Value
    Else
        Range("J" & i).Value = "Affectation non définie"
    End If
Next i

End Sub
 

Faroyo

XLDnaute Junior
Bonjour Nairolf,

je viens de tester et effectivement le code et il fonctionne parfaitement.
Je te remercie pour ton aide.
Je vais m’efforcer de décoder tout cela et de bien comprendre le principe.

En tout cas, merci pour votre aide.
Passer une bonne fin de journée.

Faroyo
 

Discussions similaires

Réponses
7
Affichages
179