Vich
XLDnaute Nouveau
Bonjour,
Je suis débutant en VBA même si je commence à toucher un peu vu que je fais que ça depuis 2 semaine mais j'ai besoin d'aide sur un point de mon programme.
J'ai une feuille test pour une macro de triage. Que voici : Regarde la pièce jointe Test méthode tri tete par refconnect.xlsx
C'est une feuille créée par une autre macro et donc le premier tri sur les refconnecteur est fais via macro.
J'aimerais trier chaque refconnecteur (18 0229 33, 45 1387 00, 45 5091 00 ect....) par la colonne TETE A de A à Z.
J'ai pensé à utiliser une feuille annexe de copier coller chaque ligne de chaque refconnecteur de les trier dans la feuille annexe et de les coller dans la première feuille.
Le code donne ceci :
Je sais, il n'est pas optimisé est bien sur, n'est pas fonctionnel et c'est pout cela que je demande votre aide car étant débutant j'ai surement des problèmes de synthaxe.
Merci d'avance, Vich.
Je suis débutant en VBA même si je commence à toucher un peu vu que je fais que ça depuis 2 semaine mais j'ai besoin d'aide sur un point de mon programme.
J'ai une feuille test pour une macro de triage. Que voici : Regarde la pièce jointe Test méthode tri tete par refconnect.xlsx
C'est une feuille créée par une autre macro et donc le premier tri sur les refconnecteur est fais via macro.
J'aimerais trier chaque refconnecteur (18 0229 33, 45 1387 00, 45 5091 00 ect....) par la colonne TETE A de A à Z.
J'ai pensé à utiliser une feuille annexe de copier coller chaque ligne de chaque refconnecteur de les trier dans la feuille annexe et de les coller dans la première feuille.
Le code donne ceci :
Code:
Sub Test()
'Méthode qui trie les TETE A de A à Z pour chaque connecteur
'Calcul de nombre de lignes
Dim NbCells As Integer
NbCells = Range("J1").End(xlDown).Row
'Variable qui définie la valeur précédente
Dim RefConnectPrec As String
RefConnectPrec = Range("J2")
'Variable qui définie la première ligne du connecteur
Dim Marqueur1 As Integer
Marqueur1 = 2
'Balayage de la colonne RefConnecteur
For I = 2 To NbCells
'Si la valeur de la case est différente de la valeur précédente alors
If Range("J" & I).Value <> RefConnectPrec Then
Rows(Marqueur1 & ":" & I).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(3).Select
Range("A1").Select
ActiveSheet.Paste
'Apllication du filtre sur TETE A de A à Z
Application.CutCopyMode = False
Selection.AutoFilter
ActiveWorkbook.Worksheets(3).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(3).AutoFilter.Sort.SortFields.Add Key:=Range _
("B1:B1000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(3).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Compte le nombre de lignes sur la feuille Echange
Dim NbCellsEchange As Integer
NbCells = Range("J1").End(xlDown).Row
Rows("1:" & NbCellsEchange).Select
Selection.Copy
Sheet(2).Select
Rows(Marqueur1 & ":" & I).Select
Selection.Paste
'Redéfinie RefConnecPrec pour la prochaine boucle
RefConnectPrec = Range("J:" & I)
End If
I = I + 1
Next I
End Sub
Je sais, il n'est pas optimisé est bien sur, n'est pas fonctionnel et c'est pout cela que je demande votre aide car étant débutant j'ai surement des problèmes de synthaxe.
Merci d'avance, Vich.