Microsoft 365 Recherche premiere valeur dans Colonne

  • Initiateur de la discussion Initiateur de la discussion Faroyo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
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

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.
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour