> Tous les forumsBureautique

 Trier Code VbaSujet résolu
Statut du sujet : RESOLU Imprimer
 vieuxmonsieur
  Posté le 16/05/2008 @ 01:12  
 Petit astucien

442 Messages

Bonsoir à vous tous et toutes,

Je ne suis pas familiarisé avec le Vba que je ne comprends que très peu et le code ci-dessous me pose problème au nivrau du If Range (erreur 1004)

Je vous remercie de bien vouloir m'aider en restant à votre disposition

Ce que je cherche c'est que lorsque la derniere cellule de la colonne C est renseignée que le code ci-dessous tri les informations saisie dans les colonnes A,B et C - les ajouts d'article étant toujours ecris à la suite de la liste initiale

'Tri automatique après saisi du Type de légende

Private Sub TriLegende_Change()
Dim Texte As String
If Range("C").Value = ("") Then
Msg = "Vous devez renseigner le Type"
Exit Sub
End If
Columns("A:C").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Range("A1").Select
End Sub

En vous remerciant de votre aide désintéressée.

 Afficher le profil de vieuxmonsieur Envoyer un message privé à vieuxmonsieur
 
 
Publicité
 galopin01  Posté le 16/05/2008 à 08:26  
Astucien

4313 Messages

bonjour,

Range définit une cellule ("C2") ou un groupe de cellule ("C2:C25")

Range "C" ne signifie donc rien d'ou l'erreur.

Ton bout de macro, n'est pas trop cohérent avec le titre et tes explications et en l'absence d'un classeur démo il m'est impossible d'approfondir la question sans en faire un livre...

Le problème ne semble pas tant un problème de tri (surtout automatique !) plutot qu'un problème de contrôle de saisie avant de faire le tri : C'est un vaste sujet ou une maîtrise minimum de VBA est nécessaire. Il y a (en gros) 2 approches de la question. Je te livre la plus vraisemblable :

Déterminer la dernière ligne dans la colonne B et dans la colonne C. Si les 2 sont égaux on peut trier.

On trouve ce genre de routine dans pratiquement toutes les macros :

i = Range("A65536").End(xlup).Row

Dans ton cas ça peut faire :

Sub test()
DerniereligneColB = Range("B65536").End(xlUp).Row
DerniereligneColC = Range("C65536").End(xlUp).Row
If DerniereligneColB = DerniereligneColC Then MsgBox "Au boulot" Else MsgBox "Beurk"
End Sub

A+

Afficher le profil de galopin01 Voir la configuration de galopin01Envoyer un message privé à galopin01
 Revenir en haut de la page
 vieuxmonsieur  Posté le 16/05/2008 à 09:29  
Petit astucien

442 Messages

Bonjour galopin01, le forum,

Je viens te remercier pour ton aide qui m'a permis de m'en sortir avec le code ci-dessous :

'Tri automatique après saisi du Type de légende
Private Sub TriLegende_Change()
Dim Texte As String
DerniereligneColB = Range("B65536").End(xlUp).Row
DerniereligneColC = Range("C65536").End(xlUp).Row
If DerniereligneColB = DerniereligneColC Then
Else: MsgBox "Saisie incomplète"
Exit Sub
End If
Columns("A:C").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Range("A1").Select

Au plaisir et bonne journée à toi et au forum.

Afficher le profil de vieuxmonsieur Voir la configuration de vieuxmonsieurEnvoyer un message privé à vieuxmonsieur
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsBureautique

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page