des lignes qui sont sensées aller par paire

niwed10

XLDnaute Nouveau
Bonjour à tous

J’aurais besoin d’un coup de main pour une macro VBA:

J’ai une liste avec une 20ene de critères en colonne dont : quantité ; prix ; strike
Et Cette liste est composée de paires que je veux associer et séparées d’une ligne vierges : je m’explique :

Je veux que cette liste qui est en vrac soit retrié afin de mettre dans un nouvel onglet les paires ensemble (l’une en dessous de l’autre) et séparé des autres paires par une ligne vierge.
Et les lignes uniques n’ayant pas de paire allant dans un autre onglet et sont séparé les unes des autres par une ligne vierge.

Pour l’instant j’ai crée une macro qui à partir d’une liste en vrac, filtre certains critères et le copie trié en fonction de la quantitée, du prix et du strike dans un nouvel onglet.

Bref ! Mon problème est d’avoir le code d’une boucle qui va :

1- prendre la 1ere ligne du tableau et voir si via 3 critères disons (quantitée, prix, strike), il existe au moins 2 de ces critères dans une autre ligne de la liste ( voir étendre ça à plus de critères pour ne pas avoir d’erreur de paire qui ne sont pas ensemble alors qu’elle devrait l’être).
2-les/la copier dans un autre onglet et les/le espacer d’une ligne vierge avec la prochaine paires.
-Puis passer à la seconde ligne.

NB : Il est possible d’avoir des trio

Le but est donc de retrouver des lignes qui sont sensées aller par paire mais qui peuvent avoir un critère différent et de les separé par une ligne vierge.

J’aimerais que qqun me montre son code s’il a une macro de ce genre ou des parties qui pourraient m’aider. Parce que je ne vois pas comment commencer le code…
En vous remerciant bien d’avance…

PS : Si vous avez rien compris, merci de me le dire, que je réexplique !
 
Dernière édition:

13GIBE59

XLDnaute Accro
Re : des lignes qui sont sensées aller par paire

Bonjour, Niwed10

Au vu de ton message, personne ne pourra t'aider ! Ton texte est trop long et "ne donne pas envie" d'aller au bout ! Mets toi à la place du lecteur...:confused:

Conseils : raccourcis ton message, structure le, et surtout joins un bout de fichier pour que le lecteur visualise ton besoin.:)

Tu peux écrire sur ta feuille Excel : une zone de texte avec quelques explications sont plus parlantes qu'un long discours...à lire.

Bon courage !

A bientôt, j'espère. ;)
 

Excel-lent

XLDnaute Barbatruc
Re : des lignes qui sont sensées aller par paire

Bienvenue Niwed10,
Bonjour 13GIBE59, le fil,

Etape 1 : Recherche des doublons pour faire une macro secondaire. Code plus court, plus clair.

La mise en page de ton tableau onglet 2 et 3 est identique! Tu as écris le code 2 fois.

Etape 2 : module 2, j'ai recopié ta partie qui faisait doublon
Etape 3 : j'ai neutralisé toutes les lignes inutiles (je te laisse le soin de les effacer, ainsi que mes commentaires)
Etape 4 : mise à jours de la macro principale situé module 1

Cf. ci-joint

Il se fait tard, je te laisse étudier cela.

Une piste pour tes boucles :
-> For each
-> For to next

me semble les plus faciles à mettre en place et approprié à ton cas.

Bonne fin de soirée
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : des lignes qui sont sensées aller par paire

Bonsoir,

Fichier trop gros, même zippé!

Dans module 2, copie le code ci-dessous :
Code:
Sub MiseEnFormeTableau()

 [COLOR="Red"]   ActiveWindow.SplitRow = 1
    ActiveWindow.FreezePanes = True[/COLOR]
   
   Range("A1:BA500").Select
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
    End With
    
    Rows("1:1").Select
    With Selection.Interior
        .ColorIndex = 36
        .Pattern = xlSolid
    End With
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
         End With
    
    Selection.Font.ColorIndex = 0
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    Selection.Font.Underline = xlUnderlineStyleSingle
    Cells.Select
    Cells.EntireColumn.AutoFit
End Sub

J'ai juste rajouté les 2 lignes en rouge, permet de figer les deux premières lignes de tes tableaux feuille 2 et 3, plus pratique étant donné la longueur de ton tableau.
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : des lignes qui sont sensées aller par paire

Dans module 1

Rajoute la ligne rouge
Code:
   With Sheets("[COLOR="Blue"]nom de ta feuille[/COLOR]")
        With .Range("A1").CurrentRegion
        .Sort Key1:=.Range("U2"), Order1:=xlAscending, Key2:=.Range("W2"), Order2:=xlAscending, Header:=xlYes
        End With
    End With
  
[COLOR="Red"]MiseEnFormeTableau[/COLOR]

et supprime tout jusqu'à (inclus) :
Code:
    Selection.Font.ColorIndex = 0
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    Selection.Font.Underline = xlUnderlineStyleSingle
    Cells.Select
    Cells.EntireColumn.AutoFit

Opération à répéter au total DEUX fois dans ta macro module 1

Bonne continuation
 
Dernière édition:

niwed10

XLDnaute Nouveau
Re : des lignes qui sont sensées aller par paire

Merci bien de m'avoir aidé, j'ai une idée pour l'étape ou je dois copier les paires et les séparer; j'ai bien noté les boucles à utiliser.

Je te remercie encore de ton coup de main nocturne !
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 249
dernier inscrit
solo