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

XL 2010 Extraction de donnée / Extraire donnée

Bantho

XLDnaute Nouveau
Bonjour à tous,

Je reviens vers vous concernant quelque chose qui me prend énormément de temps. En effet, je reçois des fichiers où dans les descriptifs, il y a plusieurs infos. Je dois en extraire les données comme par exemple :

Cellule A1 : Repiquage La personnalisation est prévue dans la zone de repiquage qui se trouve dans la partie blanche à gauche du millésime sur le planning. Impression recto seul. Fichier à fournir par vos soins au format du repiquage 255 x 40 mm en SMALL et ( 370 x 60 mm en XXL ) en PDF sans fond perdu. SMALL ouvert : 330 x 470 . Format plié : 330 x 235 mm. XXL ouvert : 480 x 700 mm. Format plié : 480 x 350 mm. Livré avec un rainage entre les feuillets et le planning pour un pliage, idéal pour l'envoi postal. Qualité Les feuillets sont en papier couché satiné 170 g qualité écriture, le planning est imprimé sur du papier 400 g qualité écriture.

En gros il faudrait, grâce au descriptif de la Cellule A1 :

Cellule A2 : 330X470 Cellule B2 : 330 X 235 mm Cellule C2 : 480 X 700 mm Cellule D2 : 170 g Cellule E2 : 400 g

Les cellules ne sont malheureusement pas homogène. L exemple donné est le plus compliqué car c'était pour des calendrier de toutes tailles mais généralement j ai une ou deux dimensions et une ou deux grammage de papier/textile par cellule
Je peux ensuite avoir 600 lignes comme 12000 lignes de produits

Aujourd'hui, la seule solutions que je possède est de filtrer par gramme ou mm ou Cm... imaginer 12.000 lignes ainsi ... c est un enfer

Je vous laisse un exemple aussi de fichier avec les descriptifs que l'on peut trouver

Je vous remercie infiniment pour toute l'aide que vous pourrez m'apporter
Bonne fin de journée à vous
 

Pièces jointes

  • Fichier Test.xlsx
    9.9 KB · Affichages: 14

Staple1600

XLDnaute Barbatruc
Bonjour

Une solution avec une fonction VBA personnalisée utilisant RegEx
(adapté d'un code de JB)
VB:
Function separer(chaine As String, n, vType As Boolean)
  Set obj = CreateObject("vbscript.regexp")
  obj.Global = True
  obj.Pattern = IIf(vType, "\d{1,3}\s([x])\s+\d{1,3}", "\d{1,3}\s([g])+")
  Set a = obj.Execute(chaine)
  If a.Count > n - 1 Then separer = a(n - 1) Else separer = ""
End Function
Exemple d'utilisation
en B1 (puis recopie vers la droite)
=separer($A1;COLONNE()-1;VRAI)

et si on veut extraire le "poids"
=separer($A1;1;FAUX)

PS: Test OK sur la chaine de caractère exemple du message#1

NB:
- Ne fonctionnera que sous Windows (pas sur Mac)
- Ne pas oublier d'enregistrer le classeur en *.xlsm pour conserver le code VBA.
 
Dernière édition:
Réactions: p56

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…