Insérer une plage de cellules par ordre croissant

Bonjour,

A partir du fichier ci joint et en complément des macros "compare1 et 2", je voudrais copier les lignes trouvées dans les feuilles comparaisonBalN et comparaisonBalanceN-1 et les copier respectivement dans les feuilles BalanceN et BalanceN-1 par ordre croissant des numéros de comptes se trouvant dans la colonne A des feuilles balanceN et balanceN-1.

J'ai fait, avec l'aide de l'enregistreur de macro, ce bout de code mais il ne donne rien :

Sub InsererLignesSelectionnees()

'

' Macro1 Macro

' Macro enregistrée le 29/06/2009 par FIDUCIAL

'

'

Dim range_2007 As String

' selection de la plage de cellule à copier

range_2007 = "A5:A" & calcMaxRow("comparaisonBalanceN-1")

Selection.Copy

' selecttion de la feuille de destination des cellules à copier

Sheets("BalanceN-1").Select

ActiveWindow.SmallScroll Down:=207

Range("A222").Select

ActiveSheet.Paste

ActiveWindow.SmallScroll Down:=-225

Range("A10:D250").Select

Application.CutCopyMode = False

Selection.Sort Key1:=Range("A11"), Order1:=xlAscending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

DataOption1:=xlSortNormal

End Sub

Merci à la personne qui voudra bien m'accompagner dans l'amélioration de cette macro

Bonne journée et chapeau pour votre site (je le trove bien fait).

Afin de mieux comprendre la problématique, je joins le fichier :

https://www.excel-pratique.com/~files/doc2/vgFZcCompareBalance.xls

Merci d'avance

Bonjour,

Merci de ta dernière intervention sur ton précédent fil.

Pour ton pb ici, on pourrait très bien se servir des deux codes pour rapatrier directement les infos dans les deux feuilles. Là Pas besoin d'une macro comme celle que tu mets ici.

En gros, on rapatrie les infos des feuilles puis on trie le tout pour remettre les données par numéro d'imputation.

Tu peux confirmer ?

Amicalement

Dan

Bonjour Dan,

Excuse moi de ne pas avoir répondu plus tôt mais j'étais pris par quelques petits problèmes.

Oui, ce serait bien de faire celà à partir de la même macro ; c'est à dire :

1°) copier les lignes se trouvant dans les 2 feuilles de comparaison ("comparaisonBalN" et "comparaisonBalanceN-1")

2°) Une fois ces lignes copiées, les trier par ordre croissant des numéros de comptes.

Nota :

les lignes copiées doivent être les lignes entières issues des feuilles compraraison.

Merci pour ta réponse

Amitié

re,

Ok. Je reviens vers toi ce soir avec une solution.

Amicalement

Dan

Merci pour ton dévouement Dan

Re,

voici les deux codes que tu peux mettre dans ton fichier.

1. Copie vers la feuille BalanceN

Sub copieBalN1()
'Macro Dan pour rimbaut le 29/06/09 - XL Pratique
'http://www.excel-pratique.com/forum/viewtopic.php?t=12189
'Copie et Tri dans Balance N
Dim ligbalN As Integer, ligcom As Integer
Application.ScreenUpdating = False
ligbalN = Sheets("BalanceN").Range("A65536").End(xlUp).Row + 1
With Sheets("ComparaisonBalN")
ligcom = .Range("A65536").End(xlUp).Row
.Range("A5:B" & ligcom).Copy Destination:=Sheets("BalanceN").Range("A" & ligbalN)
End With
Sheets("BalanceN").Range("A11:D" & Sheets("BalanceN").Range("A65536").End(xlUp).Row).Sort Key1:= _
    Range("A11"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom
End Sub

2. Copie et tri dans feuille BalanceN-1

Sub copieBalN2()
'Macro Dan pour rimbaut le 29/06/09 - XL Pratique
'http://www.excel-pratique.com/forum/viewtopic.php?t=12189
'Copie et tri dans BalanceN-1
Dim ligbalN As Integer, ligcom As Integer
Application.ScreenUpdating = False
ligbalN = Sheets("BalanceN-1").Range("A65536").End(xlUp).Row + 1
With Sheets("ComparaisonBalanceN-1")
ligcom = .Range("A65536").End(xlUp).Row
.Range("A5:B" & ligcom).Copy Destination:=Sheets("BalanceN-1").Range("A" & ligbalN)
End With
Sheets("BalanceN-1").Range("A11:D" & Sheets("BalanceN-1").Range("A65536").End(xlUp).Row).Sort Key1:= _
    Range("A11"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Ces deux macros ne s'exécutent pas à la suite des macros COMPARE mais cela pourrait s'envisager.

Dans ce cas, il faudrait exécuter les 4 macros l'une à la suite de l'autre et ce, pour éviter toute erreur.

A te relire

Dan

Re,

Merci pour tes macros, Dan. Il est bien d'avoir écrit ces nouvelles macros car je préfère ne pas les inclure dans les macros Compare.

Cependant, ces macros boguent à partir de la ligne suivante :

Sheets("BalanceN").Range("A11:D" & Sheets("BalanceN").Range("A65536").End(xlUp).Row).Sort Key1:= _

Range("A11"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _

MatchCase:=False, Orientation:=xlTopToBottom

c'est à dire sur la dernière ligne.

A plus

re,

Oups... bon corrige cette ligne dans les deux macros en la remplaçant par la ligne ci-après

1. Dans la macro Sub copieBalN1(), mets

With Sheets("BalanceN")
    .Range("A11:D" & Sheets("BalanceN").Range("A65536").End(xlUp).Row).Sort Key1:= _
    .Range("A11"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom
End With

2. Dans la macro Sub copieBalN2(), mets

With Sheets("BalanceN-1")
    .Range("A11:D" & Sheets("BalanceN-1").Range("A65536").End(xlUp).Row).Sort Key1:= _
    .Range("A11"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
    MatchCase:=False, Orientation:=xlTopToBottom
End With

A te relire

Dan

Dan un grand merci, d'après les tests que j'ai fait ça fonctionne à merveille..

Encore un grand merci pour ta compétence et ta disponibilité.

Amitié

Un grand merci à Dan pour la résolution de ce problème.

A bientôt et bonne soirée

Amitié

Re,

OK. N'oublie pas le RESOLU

Bonne nuit

Dan

Bonjour Dan,

Excuse moi de t'importuner Dan mais je me suis rendu compte d'un problème. En effet, si par hasard, il n'y a pas de comptes manquants dans la balance N ou la balance N-1 alors la macro copie le premier intitulé venu notamment "Comptes à copier à la suite de la balance N puis trier les données".

Je vois 2 solutions où l'on modifie la macro et c'est la meilleure solution où je supprime l'intitulé.

Mais quand bien même je supprime l'intitulé il m'insère des lignes vides qui modifie le tableau.

Surement qu'il faudrait rentrer une condition.

Amicalement

Re,

Dan j'ai initialisé la variable ligcom à 5 et apparemment ça fonctionne. Que penses tu de celà .

Amitiés

Re,

En effet, si par hasard, il n'y a pas de comptes manquants dans la balance N ou la balance N-1 alors la macro copie le premier intitulé venu notamment "Comptes à copier à la suite de la balance N puis trier les données".

Que veux tu dire par compte manquants ?

Donne moi un exemple.

A te relire

Dan

Bonjour Dan,

Ce que je veux dire par là est le fait que si une balance, notamment la balance N, comporte tous les comptes de la balance N-1, alors la macro copieBal copie l'intitulé de la feuille compte tenu que celle ci est vide à l'exception des intitulés.

Amitiés

Bonjour Rimbaut,

Ok déso mais je n'avais pas fait attention à ce point là.

Fais ceci dans les deux macro COPIEBAL:

Juste après --> ligcom = .Range("A65536").End(xlUp).Row met la ligne ci-après

If ligcom = 4 Then End

Amicalement

Dan

Merci beaucoup Dan, je n'ai pas fait énormément de tests mais on dirait que ça fonctionne.

J'attends de faire encore quelques tests avant de clôturer le post.

Amitiés

Rechercher des sujets similaires à "inserer plage ordre croissant"