XL 2016 Fonction RechercheV + Decaler sur feuil2

MORISS

XLDnaute Junior
Bonjour,

Je viens vers vous car j'aimerais rechercher dans un tableau d'une autre feuil certaine infos d'une description.

J'aimerais en F25 récupérer uniquement la première partie de la description et en G25 la deuxième partie de la description.

Exemple de description : AAA 24*45g

F25 = 24
G25 = 45

Je joint un tableau ou les cellules son remplie manuellement.

Merci d'avance
 

Pièces jointes

  • RechercheV_momo-exemple.xlsx
    13.8 KB · Affichages: 62

job75

XLDnaute Barbatruc
Bonjour MORISS, chris, JHA,

D'après le post #1 on ne s'occupe que des nombres (2 ou 3).

Voyez le fichier joint et cette fonction VBA (matricielle) :
Code:
Function N_2_3(t$)
Dim i%, j%, a&(1 To 2), k%
t = Replace(t, " ", "") 'suppression des espaces nécessaire ?
t = "z" & t
For i = 3 To Len(t)
  If Not IsNumeric(Mid(t, i, 1)) And Mid(t, i - 1, 3) Like "#?#" Then
    For j = i - 2 To 1 Step -1
      If Not IsNumeric(Mid(t, j, 1)) Then Exit For
    Next j
    a(1) = Mid(t, j + 1, i - j - 1)
    For j = i + 2 To Len(t)
      If Not IsNumeric(Mid(t, j, 1)) Then Exit For
    Next j
    a(2) = Mid(t, i + 1, j - i - 1)
    If IsNumeric(Mid(t, j + 1, 1)) Then 'si 3 nombres successifs
      a(1) = a(1) * a(2)
      For k = j + 2 To Len(t)
        If Not IsNumeric(Mid(t, k, 1)) Then Exit For
      Next k
      a(2) = Mid(t, j + 1, k - j - 1)
    End If
    Exit For
  End If
Next i
N_2_3 = a 'matrice (vecteur ligne)
End Function
Elle doit impérativement être placée dans un module standard.

Elle est utilisée dans la plage F25:G25 avec cette formule validée matriciellement :
Code:
=SIERREUR(N_2_3(RECHERCHEV(D25;Feuil2!B:C;2;0));"")
Bien noter que le séparateur des 2 ou 3 nombres peut être quelconque (un seul caractère).

A+
 

Pièces jointes

  • RechercheV_momo-exemple(1).xlsm
    27 KB · Affichages: 68

job75

XLDnaute Barbatruc
Bonjour MORRIS, le forum,

Le fichier que j'ai joint donne bien les bons résultats en F25:G33 non ?

Sur un autre fichier faites exactement ce que j'ai écrit :

- sélectionner la plage F25:G25 et dans la barre de formules entrer la formule
Code:
=SIERREUR(N_2_3(RECHERCHEV(D25;Feuil2!B:C;2;0));"")
- valider matriciellement par Ctrl+Maj+Entrée

- copier-Collage spécial-Formules de F25:G25 vers le bas.

Bonne journée.
 

MORISS

XLDnaute Junior
Bonjour,

Merci pour votre retour,

Je fait exactement comme vous seulement sur mon excel pour valider une matrice il faut faire ctrl+shift+entré.

Quand je fait cela en sélectionnant la plage des cellules F25 et G25 excel me dit : Un tableau ne peut pas contenir de formules matricielles à plusieurs cellules.

Donc je fait cela une cellule après l'autre mais il me donne aucun résultat.

Cordialement
 

job75

XLDnaute Barbatruc
Re,

Votre tableau est organisé en tableau Excel, vous ne l'aviez pas dit.

Alors entrez en F25 et validez normalement :
Code:
=SIERREUR(INDEX(N_2_3(RECHERCHEV($D25;Feuil2!$B:$C;2;0));COLONNES($D25:D25));"")
Copier-Collage spécial-Formules de F25 surs F25:G33.

Fichier (2).

A+
 

Pièces jointes

  • RechercheV_momo-exemple(2).xlsm
    26.4 KB · Affichages: 58

Discussions similaires

Réponses
8
Affichages
793

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal