[AIDE] Macro commande de tri alphabétique
ribery_7_91
Messages postés
240
Statut
Membre
-
ribery_7_91 Messages postés 240 Statut Membre -
ribery_7_91 Messages postés 240 Statut Membre -
Bonjour à tous
Je viens vous expliquer mon problème que je n'ai pas reussi à résoudre et j'éspère que vous allez pouvoir m'aider
J'ai un tableau que voila
1 Cote Date Saisie Initiales Saisies Titre Auteur Source Index .......
2 .................................................................. <= ceci est une ligne de vide pour délimiter mon tableau
3 5 02/06/2006 RL BlaBla AFNOR BlaBla
4 2 01/02/1998 RL BlaBla Nf BlaBla
etc etc ...
J'ai fais une macro commande qui tri à l'aide de boutons ( un pour chaque catégorie ) situés dans la première ligne qui marchait lorsque la ligne 2 "n'éxistait pas" c'est a dire qu'il n'y avait pas de délimitation ( ligne 2 de petits points ici )
Je n'arrive pas à modifier ma macro pour qu'elle prenne en compte cette nouvelle ligne que j'ai inséré et donc quand je clique sur le bouton de tri rien ne se passe
Sub MacroTriCote()
'
' MacroTriCote Macro
' Macro enregistrée le 30/05/2008 par IC
'
'
Application.Goto Reference:="Cote"
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2").Select
Range("A3").Select
End Sub
Merci de votre aide et bonne journée
Je viens vous expliquer mon problème que je n'ai pas reussi à résoudre et j'éspère que vous allez pouvoir m'aider
J'ai un tableau que voila
1 Cote Date Saisie Initiales Saisies Titre Auteur Source Index .......
2 .................................................................. <= ceci est une ligne de vide pour délimiter mon tableau
3 5 02/06/2006 RL BlaBla AFNOR BlaBla
4 2 01/02/1998 RL BlaBla Nf BlaBla
etc etc ...
J'ai fais une macro commande qui tri à l'aide de boutons ( un pour chaque catégorie ) situés dans la première ligne qui marchait lorsque la ligne 2 "n'éxistait pas" c'est a dire qu'il n'y avait pas de délimitation ( ligne 2 de petits points ici )
Je n'arrive pas à modifier ma macro pour qu'elle prenne en compte cette nouvelle ligne que j'ai inséré et donc quand je clique sur le bouton de tri rien ne se passe
Sub MacroTriCote()
'
' MacroTriCote Macro
' Macro enregistrée le 30/05/2008 par IC
'
'
Application.Goto Reference:="Cote"
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2").Select
Range("A3").Select
End Sub
Merci de votre aide et bonne journée
A voir également:
- [AIDE] Macro commande de tri alphabétique
- Comment trier par ordre alphabétique sur excel - Guide
- Invite de commande - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Commande terminal mac - Guide
- Logiciel tri photo - Guide
12 réponses
Salut,
Application.Goto Reference:="Cote"
Ca signifie que tu as nommé le tableau à trier ?
Si tel est le cas alors redéfini ton "Cote" en prenant en compte ta ligne vide si "Cote" n'est pas utilisé ailleurs, sinon ajoute un "Cote2" à partir de A3.
Application.Goto Reference:="Cote"
Ca signifie que tu as nommé le tableau à trier ?
Si tel est le cas alors redéfini ton "Cote" en prenant en compte ta ligne vide si "Cote" n'est pas utilisé ailleurs, sinon ajoute un "Cote2" à partir de A3.
Alors
tout d'abord merci de ton aide
Cote est une colonne de mon tableau
Mais le nom Cote dans le programme est en fait la case A1 que j'ai renommée
Que dois je faire??
tout d'abord merci de ton aide
Cote est une colonne de mon tableau
Mais le nom Cote dans le programme est en fait la case A1 que j'ai renommée
Que dois je faire??
Alors je ne comprends pas ton code :
Application.Goto Reference:="Cote" -> Cela sélectionne donc la cellule A1
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
-> Le tri se fait sur la sélection en cours (donc A1)
Que donne un débogage "Pas à pas détaillé" de ta procédure ?
Application.Goto Reference:="Cote" -> Cela sélectionne donc la cellule A1
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
-> Le tri se fait sur la sélection en cours (donc A1)
Que donne un débogage "Pas à pas détaillé" de ta procédure ?
Mais ce que je ne comprend pas c'est que cela marchait avant
Lorsque la ligne que j'ai rajoutée n'existait pas la macro commande de tri marchait
C'est une ligne vide de 3 pixels colorée en orange pour délimiter les titres de tableau ( cote date saisie auteur etc ) et lorsque celle ci n'était pas la la macro fonctionnait
Sinon aurais tu une autre macro qui pourrait m'aider dans mon problème ??
Je te poste mon fichier excel pour que tu comprennes mieux
https://www.cjoint.com/?gsmtB2PmqB fichier excel
Merci
Lorsque la ligne que j'ai rajoutée n'existait pas la macro commande de tri marchait
C'est une ligne vide de 3 pixels colorée en orange pour délimiter les titres de tableau ( cote date saisie auteur etc ) et lorsque celle ci n'était pas la la macro fonctionnait
Sinon aurais tu une autre macro qui pourrait m'aider dans mon problème ??
Je te poste mon fichier excel pour que tu comprennes mieux
https://www.cjoint.com/?gsmtB2PmqB fichier excel
Merci
Ton lien ne fonctionne pas : Ce lien n'est pas ou n'est plus disponible.
Si ton code fonctionnait avant tu peux alors rajouter les lignes en gras dans ton code :
Le premier rajout supprime la ligne 2
Ensuite ton tri s'execute
Le second rajout remet la ligne 2
Le troisième défini la hauteur de ligne
Le dernier défini la couleur
Qu'en penses-tu ?
Si ton code fonctionnait avant tu peux alors rajouter les lignes en gras dans ton code :
Sub MacroTriCote()
Rows(2).Delete
Application.Goto Reference:="Cote"
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2").Select
Selection.EntireRow.Insert
Rows(2).RowHeight = 2.25
Rows(2).Interior.ColorIndex = 45
Range("A3").Select
End Sub
Le premier rajout supprime la ligne 2
Ensuite ton tri s'execute
Le second rajout remet la ligne 2
Le troisième défini la hauteur de ligne
Le dernier défini la couleur
Qu'en penses-tu ?
ça marche je te remercie
http://www.files-save.com/download-8fc579391a3166e63d47c3115438f29e.html
Peux tu essayer de télécharger le fichier et me dire si ça marche
http://www.files-save.com/download-8fc579391a3166e63d47c3115438f29e.html
Peux tu essayer de télécharger le fichier et me dire si ça marche
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
OK
J'aurais une autre question mais qui n'as pas de rapport avec le tri
Comme tu peux voir dans mon fichier j'ai deux onglets Saisie Contrat et Saisie Document
Je voudrais en fait que l'accès à ces onglets soit fait par mot de passe
C'est a dire que lorsque quelqu'un va cliquer sur l'onglet pour ajouter des nouveaux contrats ou document on lui demande un mot de passe
Sa evitera que des personnes mal intentionnées saisisse des nouveaux documents
Comment je pourrais faire ça??
Merci
J'aurais une autre question mais qui n'as pas de rapport avec le tri
Comme tu peux voir dans mon fichier j'ai deux onglets Saisie Contrat et Saisie Document
Je voudrais en fait que l'accès à ces onglets soit fait par mot de passe
C'est a dire que lorsque quelqu'un va cliquer sur l'onglet pour ajouter des nouveaux contrats ou document on lui demande un mot de passe
Sa evitera que des personnes mal intentionnées saisisse des nouveaux documents
Comment je pourrais faire ça??
Merci
Tu dépend du niveau de sécurité dont tu as besoin :
Ca peut-être ca :
Ou bien un userform avec des zones de texte qui mettent des étoiles quand tu tapes le mot de passe, ou bien une protection de la feuille par mot de passe ...
Ca peut-être ca :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MdP_Contrat = "toto"
MdP_Document = "tata"
If Sh.Name = "Saisie Contrat" Then
rep = InputBox("Saisissez le mot de passe")
If rep = MdP_Contrat Then
MsgBox "MdP Ok"
Else
MsgBox "Accès refusé !"
Sheets(3).Select
End If
ElseIf Sh.Name = "Saisie Document" Then
rep = InputBox("Saisissez le mot de passe")
If rep = MdP_Document Then
MsgBox "MdP Ok"
Else
MsgBox "Accès refusé !"
Sheets(3).Select
End If
End If
End Sub
Ou bien un userform avec des zones de texte qui mettent des étoiles quand tu tapes le mot de passe, ou bien une protection de la feuille par mot de passe ...
Quelle est la meilleure securité et comment faire??
Si tu cherches réellement une bonne sécurité, je te conseille de faire un classeur séparé "Saisie Contrats", un classeur "Saisie Documents" et de mettre des droits au niveau fichier sur tes classeurs (Bouton droit sur le fichier, Propriétés, onglet sécurité).
De cette façon, seuls les utilisateurs déclarés pourront ouvrir ces fichiers sans autre mot de passe que celui d'ouverture de session Windows.
De cette façon, seuls les utilisateurs déclarés pourront ouvrir ces fichiers sans autre mot de passe que celui d'ouverture de session Windows.
non je préférerais tout mettre dans le méme classeur
Comment avoir la meilleure securité en gardant un seul classeur
Je voudrais un truc avec mot de passe
Comment avoir la meilleure securité en gardant un seul classeur
Je voudrais un truc avec mot de passe
Alors j'ai vu ton MP
Ce n'est pas grave que les securité excel soient faciles a faire tomber
Je veux juste un truc ki me demande un mot de passe comme sa sa fera plaisir a mon entreprise
en fait j'ai pas trop le temps et il faut que sa leur convienne et c'est ça qu'ils veulent
Comment je peux faire??
Ce n'est pas grave que les securité excel soient faciles a faire tomber
Je veux juste un truc ki me demande un mot de passe comme sa sa fera plaisir a mon entreprise
en fait j'ai pas trop le temps et il faut que sa leur convienne et c'est ça qu'ils veulent
Comment je peux faire??
Alors fais simplement un userform avec une zone de texte et un bouton OK
De tête :
Sub Bouton1_Click()
MdP="toto"
if TextBox1.Value <> MdP Then
Sheets(3).select
end if
unload userform1
End Sub
et dans le code de ThisWorkBook tu mets
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
if sh.name="Saisie Documents" then
userform1.show
end if
End Sub
De tête :
Sub Bouton1_Click()
MdP="toto"
if TextBox1.Value <> MdP Then
Sheets(3).select
end if
unload userform1
End Sub
et dans le code de ThisWorkBook tu mets
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
if sh.name="Saisie Documents" then
userform1.show
end if
End Sub
OK
Je te remercie beaucoupe mais je viens de constater des petits problèmes dans la macro qui me fait rajouter des lignes
Comme tu as vu dans mon fichier j'ai plusieurs onglets.
Pour l'onglet Contrats ça marche nickel ça me suppirme la ligne puis la recréee mais pour l'onglet Documents je peux executer la macro une fois puis sa me met un bug et la console de débogage me surligne ça en jaune
Selection.EntireRow.Insert
De plus j'ai un deuxième problème, lorsque je rajoute une ligne avec l'aide de ta macro la ligne qui est rajoutée est "complète"
Je m'explique,
La ligne se termine à la derniere colonne ( la colonne IV ) or je voudrais qu'elle fasse uniquement la taille de mon tableau
Quelle condition dois je rajouter??
Merci de ton aide
Je te remercie beaucoupe mais je viens de constater des petits problèmes dans la macro qui me fait rajouter des lignes
Comme tu as vu dans mon fichier j'ai plusieurs onglets.
Pour l'onglet Contrats ça marche nickel ça me suppirme la ligne puis la recréee mais pour l'onglet Documents je peux executer la macro une fois puis sa me met un bug et la console de débogage me surligne ça en jaune
Selection.EntireRow.Insert
De plus j'ai un deuxième problème, lorsque je rajoute une ligne avec l'aide de ta macro la ligne qui est rajoutée est "complète"
Je m'explique,
La ligne se termine à la derniere colonne ( la colonne IV ) or je voudrais qu'elle fasse uniquement la taille de mon tableau
Quelle condition dois je rajouter??
Merci de ton aide
OK je te remercie
J'ai d'autres problèmes que je te fais part :
Avant je n'avais pas la ligne orange dans mes feuilles excel ( Contrats et Documents ) donc les macros marchaient parfaitement. Mais depuis que j'ai ajouté cette ligne orange cela ne marche plus alors voila mes problèmes :
1er problème :
- Les macros de tri marchent parfaitement bien sous l'onglet Contrats mais sous l'onglet Documents, je peux executer une seule fois une des macros et si je tente d'executer une deuxiéme ou une autre macro cela me met un bug et lorsque j'ouvre VBA Editor pour le debogage ça me surligne cette ligne en Jaune :
Selection.EntireRow.Insert
Je ne comprends pas surtout que ça marche sous Contrats
Voici une des macros de tri :
Sub MacroTriCote()
Rows(2).Delete
Application.Goto Reference:="Cote"
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2").Select
Selection.EntireRow.Insert
Rows(2).RowHeight = 2.25
Rows(2).Interior.ColorIndex = 45
Range("A3").Select
End Sub
Ensuite 2eme problème :
- Lors de la saisie d'un nouveau document ou contrat cela ne marche plus du à la ligne que j'ai rajouté. Je pense qu'il faut faire comme pour les macros de tri en supprimant cette ligne puis la rajouter mais je ne sais pas où je dois mettre les instructions pour que ça marche correctement.
Aurais tu des solutons??
Merci beaucoup
J'ai d'autres problèmes que je te fais part :
Avant je n'avais pas la ligne orange dans mes feuilles excel ( Contrats et Documents ) donc les macros marchaient parfaitement. Mais depuis que j'ai ajouté cette ligne orange cela ne marche plus alors voila mes problèmes :
1er problème :
- Les macros de tri marchent parfaitement bien sous l'onglet Contrats mais sous l'onglet Documents, je peux executer une seule fois une des macros et si je tente d'executer une deuxiéme ou une autre macro cela me met un bug et lorsque j'ouvre VBA Editor pour le debogage ça me surligne cette ligne en Jaune :
Selection.EntireRow.Insert
Je ne comprends pas surtout que ça marche sous Contrats
Voici une des macros de tri :
Sub MacroTriCote()
Rows(2).Delete
Application.Goto Reference:="Cote"
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2").Select
Selection.EntireRow.Insert
Rows(2).RowHeight = 2.25
Rows(2).Interior.ColorIndex = 45
Range("A3").Select
End Sub
Ensuite 2eme problème :
- Lors de la saisie d'un nouveau document ou contrat cela ne marche plus du à la ligne que j'ai rajouté. Je pense qu'il faut faire comme pour les macros de tri en supprimant cette ligne puis la rajouter mais je ne sais pas où je dois mettre les instructions pour que ça marche correctement.
Aurais tu des solutons??
Merci beaucoup