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

XL 2013 Extraction automatique d'une plage de numéros

Sequane25

XLDnaute Nouveau
Bonjour,
j'ai une plage de numéros que j'aimerai extraire automatiquement pour les afficher les uns sous les autres.
Exemple : Dans la cellule, j'ai "28100-28105" et je voudrais faire afficher dessous ou à coté sous cette forme.
28100
28101
28102
28103
28104
28105
Avez vous une solution ?
Merci d'avance
Christophe
 
Solution
Bonjour Sequence25, le fil,

bienvenue sur le site XLD !

je te propose le fichier joint ci-dessous.

* tu peux voir que la 2ème feuille est vide

* va sur la 1ère feuille, et fais Ctrl e ➯ travail effectué !

* tu es de nouveau sur la 2ème feuille, et la 1ère feuille est restée inchangée.
seul petit défaut : il manque la séquence Sequane00001 à Sequane000025.

VB:
Option Explicit

Sub Essai()
  If ActiveSheet.Name <> "Feuil1" Then Exit Sub
  Dim n&: n = Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Sub
  Dim T, s$, p$, a&, b&, c&, i&, j&, k&
  n = n - 1: T = [A2].Resize(n): k = 2: Application.ScreenUpdating = 0
  With Worksheets("Feuil2")
    .Columns(1).ClearContents: .[A1] = "N° de Téléphone"...

djidji59430

XLDnaute Barbatruc
Bonjour à tous,

Une solution :
tu selectionnes ta cellule puis données==>convertir==>séparateur tiret
tu as une plage de cellule que tu selectionnes puis copier/coller special tu coches transpose
tu as tes items en colonne


Crdlmt
 

Sequane25

XLDnaute Nouveau
Merci à vous deux.
JHA , ton fichier marche comme je le veux, mais, car il y un mais ...
C'est pas aussi simple que ça. En fait, dans la cellule il s'agit de numéros de tel, donc le nombre de caractères est constant , 10.
Ensuite, je n'ai pas 1 cellule mais une liste de plus de100 .
0102030400-0102030403
0203040508-0203040508
xxxxxxxxxxx-yyyyyyyyyy
xxxxxxxxxxx-yyyyyyyyyy

Est ce possible d'automatiser ça pour afficher les resultats à la suite ou sur une autre feuille ?
0102030400
0102030401
0102030402
0203040508
0203040509
0203040510
0203040511
0203040512
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Sequence25, le fil,

bienvenue sur le site XLD !

je te propose le fichier joint ci-dessous.

* tu peux voir que la 2ème feuille est vide

* va sur la 1ère feuille, et fais Ctrl e ➯ travail effectué !

* tu es de nouveau sur la 2ème feuille, et la 1ère feuille est restée inchangée.
seul petit défaut : il manque la séquence Sequane00001 à Sequane000025.

VB:
Option Explicit

Sub Essai()
  If ActiveSheet.Name <> "Feuil1" Then Exit Sub
  Dim n&: n = Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Sub
  Dim T, s$, p$, a&, b&, c&, i&, j&, k&
  n = n - 1: T = [A2].Resize(n): k = 2: Application.ScreenUpdating = 0
  With Worksheets("Feuil2")
    .Columns(1).ClearContents: .[A1] = "N° de Téléphone"
    For i = 1 To n
      s = T(i, 1)
      If Len(s) = 21 Then
        If Mid$(s, 11, 1) = "-" Then
          p = Left$(s, 5): a = Val(Mid$(s, 6, 5)): b = Val(Right$(s, 5)): c = b - a
          For j = 0 To c
            .Cells(k, 1).Offset(j) = Format(p, "00000") & Format(a + j, "00000")
          Next j
          k = k + c + 1
        End If
      End If
    Next i
    .Select
  End With
End Sub

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.

soan
 

Pièces jointes

  • Exo Sequane25.xlsm
    17 KB · Affichages: 3

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
Sous Excel 2013, il va falloir télécharger et installer l'Add-In Power Query.

Voir PJ


Cordialement
 

Pièces jointes

  • Sequane25_PowerQuery_V1.xlsx
    18.5 KB · Affichages: 1

soan

XLDnaute Barbatruc
Inactif
Bonjour R@chid,

ma solution VBA fonctionne sans Power Query et marche sur toutes les versions d'Excel.

c'est pour ça que Microsoft devrait faire une mise à jour rétroactive pour ajouter Power Query dans toutes les versions précédentes d'Excel, à partir d'Excel 2007 (ou même d'Excel 2003) ; mise à jour gratuite de préférence ! sinon les utilisateurs vont la bouder financièrement.

oui, oui, je sais : c'est contre la politique commerciale de Microsoft qui veut à tout prix forcer ses chers clients-vaches-à-lait à passer à une version ultérieure, afin de mieux pouvoir les traire et engranger d'autres bénéfices pécuniaires ; il en a jamais assez : toujours plus, tellement il est jaloux des monstrueux bénéfices de Google, Facebook, et Apple.



comme j'ai Excel 2007, n'oublie pas de dire à Crosoft que j'suis vraiment très triste de pas avoir pu essayer ta solution Power Query à cause de sa cupidité qui l'empêche de faire des mises à jour rétroactives de Power Query sur les anciennes versions d'Excel ; pourtant, j'suis vraiment persuadé que techniquement, ça doit être tout à fait possible ! en fait, c'est comme pour Emmanuel Macron ou tous ses Ministres : à Crosoft, il ne lui manque que la volonté politique pour bien faire les choses...

à tout hasard, ça te dirait pas de diriger Microsoft et de prendre les bonnes décisions ? c'est-à-dire plus pour la satisfaction de la clientèle que pour le fric ; bien sûr, tu auras le droit de toucher le salaire d'un gros PDG d'une firme multinationale, qui a mis en plus son siège social dans un paradis fiscal. (enfin, il paraît, d'après la rumeur publique)

soan
 
Dernière édition:

Sequane25

XLDnaute Nouveau
Bonjour soan
Merci beaucoup c'est exactement ce que je voulais ! Super boulot !!!!!! ça marche impeccable.
Maintenant, faut juste que j'étudie ta macro pour comprendre . C'est là que je vais rigoler, je n'y connais rien en macro et pas grand chose en formules
Je n'ai pas compris ton commentaire "seul petit défaut : il manque la séquence Sequane00001 à Sequane000025". Je n'ai pas vu de pb.
Cdt
Christophe
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Christophe,

merci pour ton retour, et j'suis ravi que ma solution te convienne !

mon commentaire « seul petit défaut : il manque la séquence Sequane00001 à Sequane000025 » était juste une petite blague : un jeu de mot par rapport à ton pseudo « Sequane » qui ressemble à « Séquence » ; et avec tes suites de nombres, on est en plein dans les séquences de nombres ! comme ton pseudo complet est « Sequane25 », ça aurait fait : Sequane00001 ; Sequane00002 ; Sequane00003 ; ... ; Sequane00025 ; c'est des numéros de téléphone spéciaux, comme ceux que peuvent en avoir des VIP, de la même façon que pour la voiture de certaines célébrités, y'a des plaques d'immatriculation personnalisées.​



ci-dessus : les immatriculations spéciales de James Bond 007, Michael Knight (série télévisée K2000), et la célèbre Marilyn Monroe (la pinup n° 1) ; à quand une immatriculation spéciale Sequane0025 ? (le futur espion qui va remplacer James Bond)

j'avais pourtant mis un indice : le début de mon post #5 est « Bonjour Sequence25, le fil, » au lieu de « Bonjour Sequane25, le fil, » ; à tout hasard, j'confirme quand même qu'y'a effectivement aucun problème.

pour bien comprendre mon code VBA, il faut surtout suivre attentivement l'évolution de toutes les variables, sans mélanger les unes avec les autres ; bonne chance !

soan
 
Dernière édition:

Sequane25

XLDnaute Nouveau
Bonjour Sequence25
Ce bonjour là, je l'avais bien repéré et il m’avait fait sourire car j'avais bien fait la relation.
Celle là, " jusqu'au Sequane000025", je ne l'avais pas vu venir
Il n'y a pas que dans excel que tu excelles également
je vais en avoir besoin pour étudier ton script. Je démarre de presque de 0.


Pour la petite histoire, les Sequanes étaient les gaulois qui vivaient en Franche Conté, D'ou(bs) le 25.
Christophe
 
Dernière édition:

Discussions similaires

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