Garder une suite de nombre de 10 chiffres commençant par 107 ou 450

Bonjour à tous,

J'ai un problème avec une extraction d'un agenda électronique dont je souhaite isoler les numéros comportant 10 nombres (commençant par 450 ou 107) en gardant une suite de nombre par ligne (colonne D). De ce fait, il faudrait que je trouve le moyen de décomposer les lignes de l'extraction (ci-jointe colonne D) comportant plusieurs commandes en plusieurs lignes avec une seule commande (chaîne de 10 nombres). Tout en enlevant les autres caractères inutiles.

Il faudrait que ces chaines de 10 nombres se copie dans la feuille "SortiePrep" à raison d'1 numéro par ligne, puis que le code y associe des zones de chargements écrites comme ceci "Z001","Z002" suivant l'ordre chronologiques des lignes.

* Note : quand un créneau horaire comporte plusieurs numéros de commandes, il faut que la zone de chargement soit la même pour tous les numéros de cette commande.

J'espère avoir été clair, j'essaye de bidouiller depuis quelques semaines mais je ne réussis pas :(

Bonjour à tous !

Une proposition (liée à ma compréhension du besoin....) via Power Query (complément gratuit à installer pour Excel 2013 - Nativement intégré dans les versions postérieures) :

Bonjour,

Merci beaucoup pour votre réponse rapide, cependant j'ai un ordinateur d'entreprise qui ne supporte pas cette extension :( (merci le patron).

Je vais donc reformuler :

J'ai une extraction d'un agenda électronique à trier.

Chaque créneau peut contenir plusieurs camions, qui peuvent contenir eux mêmes plusieurs numéros de commandes (exemple : 1076585966 / 1076585967)

Il faut que je décompose chaque référence une par une, en supprimant les caractères parasites.

L'idéal étant d'obtenir toutes ces commandes affectés par zone de chargement ( de "Z001" à "Z054") selon leur camion. A noté que plusieurs numéros peuvent être affectés à une même zone si ces commandes sont dans la même cellule dans l'extraction(même camion). Pour que je puisse les lancer automatiquement via l'ERP de l'entreprise.

Je vous joins un exemple.

Merci d'avance :)
17exemple.xlsm (13.79 Ko)

Bonjour de nouveau !

........ cependant j'ai un ordinateur d'entreprise qui ne supporte pas cette extension :( (merci le patron).

Je passe donc la main.

Bon courage......

Bonjour,

Merci quand même :)

Je vais attendre d'autres réponses...

Bonjour de nouveau !

Je vais attendre d'autres réponses...

Cela passera, je pense, par un code VBA....si votre entreprise accepte cette possibilité....

votre patron du mois doit au minimum accepter une solution PQ

Autrement avec une version 365-2021 la fonction Filtre

Dans les autre versions AdvancedFilter.

Sinon ce sera filtrer à main et copier&coller

Bonjour,

Merci énormément pour ta réponse rapide, je précise ma demande dans le fichier Excel ci joint.

Il y a donc plusieurs étapes :

1) Enlever les caractères parasites de la cellule qui contient les numéros de commandes

2) Extraire le ou les numéros de commandes

3) Les placés dans la second feuille à la suite les uns des autres.

4) Si une cellule contient plusieurs numéros de commandes, alors ceux-ci sont également mis un par ligne. Mais ils recoivent la même zone de chargement. (allant de "Z001" à "Z054" puis loop.

En espérant que j'ai réussi à être clair :))) .

13exemple-2.xlsm (16.35 Ko)

vous donnez un fichier avec extension ".xlsm", alors des macros sont permis ?

c'est encore 2013 comme version excel ?

Bonjour,

Oui les macros sont permis c'est un excel 2013 :).
Je me suis peut-être mal exprimé...

Bien à vous

edit :modifié après

Sub MesCommandes()
     Dim c     As Range, z
     Set dict = CreateObject("scripting.dictionary")

     With Sheets("sheet1")
          Set c = Intersect(.UsedRange, .Columns("D"))     'les données dans la colonne D
     End With
     If c Is Nothing Then MsgBox "rien dans colonne D": Exit Sub

     For Each cl In c.Cells
          sp = Split(Replace(Replace(cl.Value, "/", " "), "+", " "))     'couper en pièces, possible séparateurs = / + et " "
          b = False     'drapeau bas
          For i = 0 To UBound(sp)     'boucle les pièces
               Select Case Left(sp(i), 3)     'les 3 premiers charactères
                    Case "170", "450"     'seulement ces 2
                         If Len(sp(i)) >= 10 Then
                              s = Left(sp(i), 10)
                              If IsNumeric(s) Then
                                   If b = False Then b = True: z = z + 1: If z > 54 Then z = 1     'drapeau haut et z+1
                                   dict.Add dict.Count, Array("'" & s, "Z" & Format(z, "000"))                             'ajouter au dictionaire
                              End If
                         End If
               End Select
          Next
     Next

     i = dict.Count     'nombre d'entrées dans ce dictionaire
     If dict.Count = 1 Then dict.Add dict.Count, Array("", "")     'ajouter un dummy si le nombre est 1
     If dict.Count Then
          Sheets("résultat").Range("A" & Rows.Count).End(xlUp).Offset(2).Resize(i, 2).Value = Application.Index(dict.items, 0, 0)     'coller les items du dictionaire dans la feuille Résultat
     End If

End Sub
8exemple-2-1.xlsm (32.59 Ko)

Bonjour,

Merci beaucoup pour votre aide, la macro marche sans soucis c'est vraiment impressionnant.

:) :) :)

Encore merci,

L'employéDuMois

Rechercher des sujets similaires à "garder suite nombre chiffres commencant 107 450"