Tri personnalisé et mise en forme VBA.

matthunter

XLDnaute Nouveau
Bonjour, je cherche actuellement une solution à deux de mes problèmes que je n'arrive pas a résoudre.
J'aimerai mettre en forme les informations coller de la même façon que les lignes au dessus.

Mon code actuel :
VB:
Private Sub CommandButton1_Click()

If GRADE = "" Or NOM = "" Or PRENOM = "" Or SEXE = "" Then
MsgBox "Vous devez renseigner les 4 critères d'identification.", 0, "Information"

Else

Range("B13").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = GRADE.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = NOM.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = PRENOM.Value
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = SEXE.Value
ActiveCell.Offset(0, 1).Select
Range("B13").Select

Range("B13").Copy
    With ActiveCell.Value
        End With
        ActiveCell.PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
'MISE EN FORME

MsgBox "Personnel enregistré."
Unload Me
End If
End Sub


De plus j'aimerai que les informations soit collées dans un certain ordre selon le GRADE. (La solution des plage ne fonctionnant pas ici car certains grade ne sont pas défini de base = tri personnalisé ?)
L'ajout et la suppression de personne ne fonctionnant pas encore très bien. :confused:
 

xUpsilon

XLDnaute Accro
Bonjour,

ActiveCell.PasteSpecial Paste:=xlPasteValues
Tu demandes expressément à Excel de ne copier que les valeurs, donc normal qu'il n'applique pas la mise en forme ;) (ou alors est-ce que la mise en forme de B13 ne te convient pas et qu'il t'en faut une autre ?
Quoi qu'il en soit, sache que tous les critères de mise en forme sont faisables par vba, si tu veux changer la police par exemple ce sera .Font.Size, .Font.Color etc, la couleur d'arriere plan .BackColor, les bordures .Borders.Weight, .Borders.Color et j'en passe et des meilleures. BREF, toutes les mises en forme peuvent être faites par vba.
Ensuite, pour coller au bon endroit pour qu'il soit avec son grade, je te propose de nommer dynamiquement tes plages de grades. Ainsi, avant de coller, tu sélectionnes une cellule dans la plage concernée (recherchée par macro), puis tu insères une ligne dedans et tu colles.

Bonne continuation
 

xUpsilon

XLDnaute Accro
Eh bien à ce moment là autant mettre toute la mise en forme dans le code. J'ignore si on peut copier/coller uniquement un format, mais autant tout écrire dans le code.

Pour trier par ordre alphabétique, tu peux toujours inclure une procédure dans ta macro qui regarde où tu te trouves par rapport aux valeurs de ta plage et qui se positionne ensuite mais ça complexifie un peu les choses. Pour ce change de trier je te conseillerais plutot d'entrer d'abord les valeurs puis tu sélectionnes ta plage et tu utilises l'outil de tri de Excel.

Bonne continuation
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 146
Membres
112 669
dernier inscrit
Guigui2502