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

suite de nombre dans une colonne

perrmi

XLDnaute Occasionnel
bonjour ,

j'ai 5 colonnes de chiffres différents.(jamais les memes ).

Dans chaque colonne j'aimerais extraire les suites de nombres (Chiffres)
exemple:
-colonne A :
J'ai les nombres 1...4.5....9.10.11......
-Colonne B:
12...15
-Colonne C:
2...4....6.7.8....13.14
-Colonne D:
16
-Colonne E:
3

j'aimerais donc faire un tableau ou apparaisse les suite de nombres.
pour chaque colonne j'aurai donc :
A= 9-10-11
B=
C=6-7-8
D=
E=

Merci
Michel

je vais essayer d'etre plus precis
ci dessous un tableau


j'aimerais donc creer un tableau pour chaque colonne A-B-C-D-E
Visualiser les suites de nombres
comme ceci

a partir de ce tableau creer un tableau pour visualiser les suites de nombres
comme le tableau ci dessous.
 

Pièces jointes

  • upload_2017-4-9_19-14-17.png
    8 KB · Affichages: 26
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Si le tableau source ne dépasse pas 10 ou 20000 lignes on peut utiliser cette macro évènementielle :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nlig&, tablo, dest As Range, col%, a(), n&, lig&, nmax&
With [A3:E22] ' tableau source, à adapter
  nlig = .Rows.Count
  tablo = .Resize(nlig + 1) '1 ligne de plus
End With
Set dest = [G3] 'à adapter
Application.EnableEvents = False
For col = 1 To UBound(tablo, 2)
  ReDim a(1 To nlig, 1 To 1)
  n = 0
  For lig = 1 To nlig
    If tablo(lig, col) <> "" And tablo(lig + 1, col) = tablo(lig, col) + 1 Then
      n = n + 1
      a(n, 1) = tablo(lig, col)
    ElseIf n Then
      If a(n, 1) <> "" Then
        n = n + 1
        If tablo(lig, col) = a(n - 1, 1) + 1 Then a(n, 1) = tablo(lig, col): If n > nmax Then nmax = n
      End If
    End If
  Next lig
  dest(1, col).Resize(nlig) = a
Next col
dest.Resize(nlig, col - 1).Borders.LineStyle = xlNone 'RAZ des bordures
If nmax Then dest.Resize(nmax, col - 1).Borders.Weight = xlThin
Application.EnableEvents = True
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Séries(3).xlsm
    25 KB · Affichages: 27

perrmi

XLDnaute Occasionnel
merci petit bug sur ma feuille excel ouj'ai mis et adapter la macro
merci encore
 

job75

XLDnaute Barbatruc
Re,

Les cellules de la plage du tableau source doivent contenir des nombres ou être vides.

S'il y a des textes vides "" la ligne que vous indiquez beugue, c'est normal.

Effacez donc tous les textes "vides".

Vous pouvez aussi introduire la fonction Val mais bof :
Code:
If tablo(lig, col) <> "" And tablo(lig + 1, col) = Val(tablo(lig, col)) + 1 Then
A+
 

job75

XLDnaute Barbatruc
Re,

Sur l'image jointe on voit qu'il y a des colonnes masquées dans la plage source.

Ces colonnes contiennent peut-être des formules.

Dans ce cas il faudrait joindre votre fichier Excel pour qu'on puisse adapter correctement.

A+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Une dernière version plus souple.

EDIT: Le fichier v2 semble ne pas fonctionner.

Je me suis arraché tous les cheveux de la tête pour trouver la cause.
Allez savoir pourquoi la colonne G a été masquée !?!!?!?
Or j'utilise des instructions OFFSET qui ne prennent pas en compte les colonnes masquées
Donc si on réaffiche la colonne masquée G (version v3), la macro fonctionne bien à nouveau

version v2 : colonne G masquée -> la macro est KO

version v3 : idem v2 mais colonne G affichée -> la macro est OK
 

Pièces jointes

  • perrmi- suite de nombres- v2.xlsm
    24.4 KB · Affichages: 28
  • perrmi- suite de nombres- v3.xlsm
    24.5 KB · Affichages: 15
Dernière édition:

perrmi

XLDnaute Occasionnel
hello
PARFAIT
avec mes remerciements
bonne journée
vous etes des As
Michel
 

perrmi

XLDnaute Occasionnel
 

job75

XLDnaute Barbatruc
Bonjour perrmi, le forum,

Dans ces fichiers (1 bis) et (2 bis) je traite le cas plus général où dans le tableau source les nombres peuvent être disposés d'une manière quelconque.

La boucle For lig est modifiée en conséquence :
Code:
Sub Series()
Dim nlig&, tablo, dest As Range, col%, a(), n&, lig&, nmax&
With [A3:E22] 'tableau source, à adapter
  nlig = .Rows.Count
  tablo = .Resize(nlig + 1) '1 ligne de plus
End With
Set dest = [B27] 'à adapter
For col = 1 To UBound(tablo, 2)
  ReDim a(1 To nlig)
  n = 0
  For lig = 1 To nlig
    If tablo(lig, col) <> "" Then
      If tablo(lig + 1, col) = tablo(lig, col) + 1 And lig < nlig Then
        If n Then If tablo(lig, col) <> a(n) + 1 Then n = n + 1
        n = n + 1
        a(n) = tablo(lig, col)
      ElseIf n Then
        If tablo(lig, col) = a(n) + 1 Then n = n + 1: a(n) = tablo(lig, col): If n > nmax Then nmax = n
      End If
    End If
  Next lig
  dest(col).Resize(, nlig) = a
Next col
dest.Resize(col - 1, nlig).Borders.LineStyle = xlNone 'RAZ des bordures
If nmax Then dest.Resize(col - 1, nmax).Borders.Weight = xlThin
End Sub
Cela ne prend pas plus de temps, la macro est même un peu plus rapide.

Edit : j'ai vu que vous aviez des nombres sous le tableau, j'ai ajouté le nombre 21...

A+
 

Pièces jointes

  • Séries(1 bis).xlsm
    27.9 KB · Affichages: 11
  • Séries(2 bis).xlsm
    27.5 KB · Affichages: 12
Dernière édition:

perrmi

XLDnaute Occasionnel
merci de vous etre donner de la peine
beau travail
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Le fichier v2 du message #20 semble ne pas fonctionner.
je me suis arraché tous les cheveux de la tête pour trouver la cause.
Allez savoir pourquoi la colonne G a été masquée !?!!?!?
Or j'utilise des instructions OFFSET qui ne prennent pas en compte les colonnes masquées
Donc si on réaffiche la colonne masquée G (version v3), la macro fonctionne bien à nouveau

version v2 : colonne G masquée -> la macro est KO

version v3 : idem v2 mais colonne G affichée -> la macro est OK
 

Pièces jointes

  • perrmi- suite de nombres- v2.xlsm
    24.5 KB · Affichages: 8
  • perrmi- suite de nombres- v3.xlsm
    24.5 KB · Affichages: 13
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…