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

  • Initiateur de la discussion Initiateur de la discussion beoper
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

beoper

Guest
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

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

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

Bonsoir @ tous,
Une variante
@ + +
 

Pièces jointes

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

Dernière édition:
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

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

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

Dernière édition:
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

Dernière édition:
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

Dernière édition:
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 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour