Mettre en ordre des colonnes avecVBA

Résolu
azazelone Messages postés 5 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 20 décembre 2009 - 17 avril 2008 à 12:14
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 20 déc. 2009 à 13:33
Bonjour,

Je travaille sur ma première macro mais j'ai un gros problèmes je dois mettre des nombre de 1 à 312 dans l'ordre avec les colonnes annexes qui contiennent les autres informations de ses nombres pour cela je vais chercher dans un fichier TXT mais les nombre viennent exactement comme dans l'ordre du fichiers ainsi je suis obligé quand je veux faire les calculs de commencé à rechercher la ligne du nombre(1 à 312)  ainsi que toutes les informations de cette ligne pour faire les calculs se qui me prends beaucoup de temps et je voudrais que excel me mette ça bien ordonnée ainsi je dois pas changé les formules à chaque fois que la colonnes des nb de 1 à 312 changede position, ben euhhh....j'espère que c'est clair  merci!!! 

Azazelone

8 réponses

cs_faucheuse Messages postés 308 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 27 octobre 2011
17 avril 2008 à 13:49
Nan pas tres clair ^^, faut plus d'espaces.

Tu veux ranger dans l'ordre des numéros de 1 à 312 ou c'est autre chose?
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
18 avril 2008 à 12:18
Si tu utilises l'enregistreur de macro, ça va te générer un code que tu pourras étudier, modifier et réutiliser.

Démarre l'enregistreur, sélectionne ta plage et utilise le tri (menu Données / Trier)

En espérant avoir bien compris le problème...(?)

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
Acta_6 Messages postés 29 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 avril 2008
18 avril 2008 à 13:13
Bonjour azazelone (enfin, bonjour tout le monde ;) )
Si j'ai bien compris tu veux réordonner 1 colonne en passant par VBA sans perdre le lien avec les colonnes adjacentes.
Si, comme le préconise MPi, tu utilises l'enregistreur de macro, tu trouveras ta solution.
Si t'as un souci avec l'enregistreur, la fonction a utiliser est le Sort
Tu lui spécifies la plage a trier, ton critère, l'ordre et tout marche très bien.

Bon courage.
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
17 avril 2008 à 17:26
Salut,

il existe une fonction de trie dans excel pourquoi vouloir utiliser VBA ?

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
18 avril 2008 à 00:20
Il faudrait que tu expliques aussi comment tu récupères les données du fichier .txt
et ce qu'il contient...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
azazelone Messages postés 5 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 20 décembre 2009
18 avril 2008 à 11:16
Resalut et merci, je suis désolé de ne pas être très clair d'ailleurs le français n'est pas mon fort mais bon je vais essayé à nouveau. Je dois aller chercher des données sur deux PC contenant les informations des machines mais qui sont séparées en deux parties exemple dans le SDC1 (nom du premier PC) je vais chercher lescompteurs que je vais nommé meters et que je vais sauvegarder dans une clé USB sous le nom de meters.txt, je dois faire la même chose pour le SDC2 et je sauve dans dans meters1.txt. Les machines sont séparées et non ordonnée dans ses deux fichiers.
Je colle les deux fichier dans une feuille excel et le machines m'apparaissent dans le désordre exemple de 1à 12 ensuite 205 à 208, de 146 à 152 etc.. je dois ordonné cela dans l'ordre directement de 1 à 322 avec les colonnes D,E F e G contenant l'information nécessaire de ses machines pour faire les calculs aussi....j'espère que vous me comprennez mieux maintenant sinon je peus envoyé ma feuille à l'un de vous pour mieux comprendre...merci encore

Azazelone
0
azazelone Messages postés 5 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 20 décembre 2009
20 déc. 2009 à 12:14
Merci c'est ce que j'ai fait voici le code et comment j'allais chercher le fichier en txt. Le probleme c'est que je voudrais pas voir les collages quand il fait les applications est il possible de les suuprimés?

Sub metersinicio()

Workbooks.Open "H:\meters.txt"
Range("D1:O166").Copy
Workbooks("SlotsMachines").Activate
Worksheets("CM").Activate
Range("A6").PasteSpecial (xlPasteValues), Operation:=xlNone, Skipblanks:=False, Transpose:=False
Range("D1:O166").ClearOutline
Range("A6").Select
Workbooks("meters").Close
Worksheets("CMD").Activate
Range("A1").Select

'Abertura pelo os meters SDC2'

Workbooks.Open "H:\meters1.txt"
Range("D1:O140").Copy
Workbooks("SlotsMachines").Activate
Worksheets("CM").Activate
Range("A172").PasteSpecial (xlPasteValues), Operation:=xlNone, Skipblanks:=False, Transpose:=False
Range("D1:O140").ClearOutline
Range("C173").Select
Workbooks("meters1").Close
Worksheets("CMD").Activate
Range("A1").Select

Application.Run "metersiniciorrdem"

End Sub

Sub notasinicio()

Workbooks.Open "H:\Bill.txt"
Range("D1:M166").Copy
Workbooks("SlotsMachines").Activate
Worksheets("CN").Activate
Range("A3").PasteSpecial (xlPasteValues), Operation:=xlNone, Skipblanks:=False, Transpose:=False
Range("D1:M166").ClearOutline
Range("A1").Select
Workbooks("bill").Close
Worksheets("CMD").Activate
Range("A1").Select

'Abertura pelo os meters SDC2'

Workbooks.Open "H:\bill1.txt"
Range("D1:M140").Copy
Workbooks("SlotsMachines").Activate
Worksheets("CN").Activate
Range("A169").PasteSpecial (xlPasteValues), Operation:=xlNone, Skipblanks:=False, Transpose:=False
Range("D1:M140").ClearOutline
Range("C173").Select
Workbooks("bill1").Close
Worksheets("CMD").Activate
Range("A1").Select

Application.Run "billiniciordem"

End Sub

Sub titoinicio()

Workbooks.Open "H:\tito.txt"
Range("D1:K166").Copy
Workbooks("SlotsMachines").Activate
Worksheets("CT").Activate
Range("A5").PasteSpecial (xlPasteValues), Operation:=xlNone, Skipblanks:=False, Transpose:=False
Range("D1:K166").ClearOutline
Range("A171").Select
Workbooks("tito").Close
Worksheets("CMD").Activate
Range("A1").Select

'Abertura pelo os meters SDC2'

Workbooks.Open "H:\tito1.txt"
Range("D1:K140").Copy
Workbooks("SlotsMachines").Activate
Worksheets("CT").Activate
Range("A171").PasteSpecial (xlPasteValues), Operation:=xlNone, Skipblanks:=False, Transpose:=False
Range("D1:K140").ClearOutline
Range("C173").Select
Workbooks("tito1").Close
Worksheets("CMD").Activate
Range("A1").Select

Application.Run "titoiniciordem"

End Sub
la partie du rangement j'ai utilise l'enregistrment de macro de excel
Sub metersiniciorrdem()
'
' metersiniciorrdem Macro
'

'
Sheets("CM").Select
Range("A6:L311").Select
ActiveWorkbook.Worksheets("CM").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CM").Sort.SortFields.Add Key:=Range("A6"), SortOn _
:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("CM").Sort
.SetRange Range("A7:L311")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
Sheets("CMD").Select
Range("V1").Select
End Sub
Sub billiniciordem()
'
' billiniciordem Macro
'

'
Sheets("CN").Select
Range("A3:J308").Select
ActiveWorkbook.Worksheets("CN").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CN").Sort.SortFields.Add Key:=Range("A3"), SortOn _
:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("CN").Sort
.SetRange Range("A3:J308")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1:J1").Select
Sheets("CMD").Select
Range("V1").Select
End Sub
Sub titoiniciordem()
'
' titoiniciordem Macro
'

'
Sheets("CT").Select
Range("A5:H310").Select
ActiveWorkbook.Worksheets("CT").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CT").Sort.SortFields.Add Key:=Range("A5"), SortOn _
:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("CT").Sort
.SetRange Range("A5:H310")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
Sheets("CMD").Select
Range("V1").Select
End Sub
Sub incativasordem()
'
' incativasordem Macro
'

'
Sheets("CPL").Select
Range("B4:I309").Select
ActiveWorkbook.Worksheets("CPL").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CPL").Sort.SortFields.Add Key:=Range("B4"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("CPL").Sort
.SetRange Range("B4:I309")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.SmallScroll Down:=-15
Range("A1").Select
Sheets("CMD").Select
Range("V1").Select
End Sub

Azazelone
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
20 déc. 2009 à 13:33
Qu'est-ce que tu entends par "ne pas voir les collages" ?
La surbrillance (genre de pointillés) ?

Si oui, utilise
Application.CutCopyMode = False

Sinon, il faudrait que tu expliques un peu plus ...

MPi²Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0