Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Recopier nombres avec condition dans une suite alpha-numérique.

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 !

T

Thomas97

Guest
Bonjour,

Je cherche à extraire un litrage qui est indiqué sous la forme " 45L", "2X5L" ou encore "3,4L" dans des suites alpha-numériques de longueurs différentes et n'apparaissant pas toujours à la fin du texte: "Boite 25L -JKLI67" par exemple.

Le but étant de remplir une colonne "litrage" avec uniquement le litrage des produits afin de pouvoir utiliser plus facilement cette donnée.

Je pensais donc à une formule qui lorsqu'elle trouve la lettre "L" majuscule extrait les 3 caractères précédent si il y a des chiffres.

Ce genre de formule est bien au dessus de mes capacités, et après de nombreux tutos excel j'en appel à votre bon coeur ^^. Le vrai fichier faisant 45000 lignes, le faire à la main me parait difficile.

Il y a certaines dénominations bien gratinés tel que "Lot de 7 boites hermétiques (3x1.1L + 2x0.9L + 2.1 + 3.2L)"

J'ai mis un exemple en pièce jointe,

Même sans réponse précise, je voudrai savoir si c'est techniquement réalisable ou non,

Merci d'avance,
 

Pièces jointes

Bonjour,

Je ne sais pas si cela est possible, mais la complexité requiert au moins des connaissances avancées en VBA.

Ce n'est clairement pas à la portée du premier venu.
 
Bonjour @Thomas97 et bienvenue sur XLD 🙂,
Bonjour @Kruger$$ et bienvenue sur XLD 🙂,

Voici une solution par macro. Je ne vois pas de solution par formule.
La fonction s'appelle VQ. On l'utilise comme une formule ordinaire dans une cellule: =VQ(A2).
Cette fonction semble fonctionner pour les cas de l'exemple fourni. Savoir si elle fonctionne pour d'autres cas est à vérifier au coup par coup.

Le code est dans module1:
VB:
Function VQ(x$) As String
Dim j&, y$, r$, c$, s$

   x = Application.Trim(Replace(x, " L", "L"))
   For j = Len(x) To 2 Step -1
      If Mid(x, j, 2) Like "#L" Then
         y = Left(x, j + 1): Exit For
      End If
   Next j
   If y = "" Then Exit Function
   y = Chr(255) & y
 
   y = Application.Trim(y)
   For j = Len(y) To 1 Step -1
      c = Mid(y, j, 1): s = Mid(y, j - 1, 1)
      If InStr(1, "0123456789 x.+L,", c, vbBinaryCompare) = 0 Then Exit For
      r = c & r
      If InStr(1, "0123456789 x.+L,", s, vbBinaryCompare) = 0 Then Exit For
   Next j
   VQ = Trim(r)
End Function
 

Pièces jointes


Merci beaucoup, je test ça de suite 🙂
 
Ca marche parfaitement, je vais continuer de m'intéresser aux macro, au vu de leur utilité, merci beaucoup en tout cas!
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…