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.