Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit ?

beoper

XLDnaute Junior
Bonjour à tous,

J'ai ajouté plus de détails dans le fichier ci-joint (cf.onglet "résultat souhaité").

Merci d'avance ;)
 

Pièces jointes

  • verifier_si_bon_ordre_ds_colA_sinon_ajout_bons_nb_de_lignes.xlsm
    12.4 KB · Affichages: 40
  • verifier_si_bon_ordre_ds_colA_sinon_ajout_bons_nb_de_lignes.xlsm
    12.4 KB · Affichages: 41
  • verifier_si_bon_ordre_ds_colA_sinon_ajout_bons_nb_de_lignes.xlsm
    12.4 KB · Affichages: 42

CISCO

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Bonsoir

Une possibilité en pièce jointe, avec une colonne intermédiaire.

@ plus
 

Pièces jointes

  • ajout.xlsm
    14 KB · Affichages: 36

CISCO

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Rebonsoir

Une variante sans colonne intermédiaire, mais avec une formule matricielle à valider avec Ctrl+maj tempo + entrée.

@ plus
 

Pièces jointes

  • ajout2.xlsm
    14.9 KB · Affichages: 32

R@chid

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Bonsoir @ tous,
Une variante
@ + +
 

Pièces jointes

  • verifier_si_bon_ordre_ds_colA_sinon_ajout_bons_nb_de_lignes.xlsm
    15.2 KB · Affichages: 26
  • verifier_si_bon_ordre_ds_colA_sinon_ajout_bons_nb_de_lignes.xlsm
    15.2 KB · Affichages: 27
  • verifier_si_bon_ordre_ds_colA_sinon_ajout_bons_nb_de_lignes.xlsm
    15.2 KB · Affichages: 25

job75

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Bonjour beoper, CISCO, R@chid, le forum,

Une solution VBA avec cette macro dans le fichier joint :

Code:
Sub Résultat()
Dim t, ut&, a, ua As Byte, resu$(), n&, i&, j As Byte
With Sheets("Base") 'à adapter
  .Range("A1", .Range("A" & .Rows.Count).End(xlUp)) _
    .Sort .[A1], xlAscending 'tri de précaution
  t = .Range("A1", .Range("A" & .Rows.Count).End(xlUp)(2))
End With
ut = UBound(t) - 1
a = Array("ABC", "ABD", "BFG", "BFK", "FGJ", "FYJ")
ua = UBound(a)
ReDim resu(1 To Rows.Count, 1 To 1) 'dimension maximum
n = 1
For i = 1 To UBound(resu) Step ua + 2
  If IsError(Application.Match(Right(t(n, 1), 3), a, 0)) Then
    resu(i, 1) = t(n, 1)
    n = n + 1
    If n > ut Then GoTo 1
  End If
  For j = 0 To ua
    If Right(t(n, 1), 3) = a(j) Then
      resu(i + j + 1, 1) = t(n, 1)
      n = n + 1
      If n > ut Then GoTo 1
    End If
  Next
Next
1 With Sheets("Résultat") 'à adapter
  .[A1].Resize(i + j + 1) = resu
  .Range("A" & i + j + 2 & ":A" & .Rows.Count).ClearContents
  .Activate
End With
End Sub
L'exécution est rapide car on utilise des tableaux VBA.

Noter la MFC en colonne A de la feuille Résultat.

A+
 

Pièces jointes

  • Résultat(1).xls
    67 KB · Affichages: 29
  • Résultat(1).xls
    67 KB · Affichages: 27
  • Résultat(1).xls
    67 KB · Affichages: 26
Dernière édition:

job75

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Re,

Si l'on veut modifier la dimension de l'Array a, on peut créer le nom défini pas :

Code:
ThisWorkbook.Names.Add "pas", ua + 2 'nom défini pour la MFC
Fichier (2).

A+
 

Pièces jointes

  • Résultat(2).xls
    65.5 KB · Affichages: 25
  • Résultat(2).xls
    65.5 KB · Affichages: 26
  • Résultat(2).xls
    65.5 KB · Affichages: 25

job75

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Re,

Noter qu'en feuille Base on peut aussi appliquer les bordures par MFC :

Code:
=GAUCHE(A1;NBCAR(A1)-3*ESTNUM(EQUIV(DROITE(A1;3);tab;0)))<>GAUCHE(A2;NBCAR(A2)-3*ESTNUM(EQUIV(DROITE(A2;3);tab;0)))
Fichier (3).

A+
 

Pièces jointes

  • Résultat(3).xls
    68 KB · Affichages: 27
  • Résultat(3).xls
    68 KB · Affichages: 24
  • Résultat(3).xls
    68 KB · Affichages: 24

job75

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Re,

Pour peaufiner j'ai ajouté les bordures verticales, fichier (4).

Edit : j'ai aussi simplifié le tri initial.

A+
 

Pièces jointes

  • Résultat(4).xls
    71 KB · Affichages: 29
  • Résultat(4).xls
    71 KB · Affichages: 28
  • Résultat(4).xls
    71 KB · Affichages: 28
Dernière édition:

job75

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Bonjour le fil, le forum,

J'ai testé la macro avec une liste de 21875 lignes.

Sur Win XP - Excel 2003 elle s'exécute en 0,45 seconde.

Fichier joint.

A+
 

Pièces jointes

  • Test Résultat(1).xls
    75 KB · Affichages: 32
Dernière édition:

job75

XLDnaute Barbatruc
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Re,

Avec 54432 lignes on passe sur mon ordi à 2,30 secondes.

Fichier (2).

Edit : pour info, c'est la restitution finale dans la feuille Résultat qui prend du temps : 1,9 seconde.

A+
 

Pièces jointes

  • Test Résultat(2).xls
    75 KB · Affichages: 19
Dernière édition:

beoper

XLDnaute Junior
Re : Verifier si bon ordre dans colA sinon ajouter bon nb de ligne(s) au bon endroit

Bonjour CISCO, R@chid, job75, le forum,

Merci à tous pour votre aide très précieuse. Je m'excuse de ne pas avoir pu répondre hier mais il me fallait faire des tests, que j'ai finalement pu faire ce matin. ;)

En effet les codes de R@chid et job75 fonctionnent nickel merci. ;)
Même si c'est vrai que les solutions de job75 sont super rapides et donc adoptées. ;)

Encore merci à tous ! Gràce à vous j'ai pu me sortir d'une situation qui me semblait bien bloquée à mon petit niveau. ;)

Bon week-end ;)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof