Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/10/2011, 18h05   #1
Invité de passage
 
Homme
retraité
Inscription : juillet 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 28
Points : 4
Points : 4
Par défaut problème de tri

bonjour,
apres deux jours de recherche sur les forums et une nuit blanche a essayer de comprendre, je sèche.

apres un test de presence du champ NomPrenom, si présence je passe la routine sinon j'ecris les données dans la feuille clients

quelqu'un peut il m'expliquer pourquoi le code joint fonctionne mais que si je fait appel a sub TriAlpha cela ne marche pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
' test pour eviter les doublons dans onglet "Clients"
 
 
Dim Cellule As Range
Dim TestNomPrenom As String
 
TestNomPrenom = TextBox2Nom.Value + TextBox3Prenom.Value
 
With Worksheets("Clients").Range("K3:K65536")
    Set Cellule = .Find(TestNomPrenom, Lookat:=xlWhole)
    If Cellule Is Nothing Then
        'MsgBox ("pas trouvé")
        Call EntreeClient
        Range("B3:K3000").Sort Key1:=Range("B3"), Order1:=xlAscending, Key2:=Range("C3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
 
    End If
End With
 
'Fermeture de la UserForm  les choix et les diffrentes saisies sont perdues effacées
Unload UserForm1
 
' appel procedure de tri de la feuille "Clients"
'Call TriAlpha
 
' affichage onglet Acceuil
Worksheets("Acceuil").Select
 
End Sub
Sub TriAlpha()
 
With Worksheets("Clients")
 
    Range("B3:K3000").Sort Key1:=Range("B3"), Order1:=xlAscending, Key2:=Range("C3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
 
End With
 
End Sub
merci pour vos eclaircissements
arthur83fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 18h14   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
j'ai pas relu tout le code mais lorsque tu utilise with ..:

Code :
With Worksheets("Clients")
ensuite toutes les variables qui doivent avoir ce "with" comme racine doit commencer par un point .
donc tous les range de ton tri :

Code :
.Range("B3:K3000").Sort Ke.....
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/10/2011, 18h35   #3
Invité de passage
 
Homme
retraité
Inscription : juillet 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 28
Points : 4
Points : 4
bonjour et merci pour la reponse
mais cela ne fonctionne toujours pas quand je fais appel a la Sub TriAlpha
je continu a chercher de mon coté
merci pour vos futures réponses
arthur83fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 18h37   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par arthur83fr Voir le message
...mais cela ne fonctionne toujours pas quand je fais appel a la Sub TriAlpha...
et "cela" veut dire quoi ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/10/2011, 19h05   #5
Invité de passage
 
Homme
retraité
Inscription : juillet 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 28
Points : 4
Points : 4
bonjour,

alors la ligne 14 je la passe en commentaire
j'active le call TriAlpha
je lance le masque de saisie, je le valide et la cela m'inscrit les données dans la feuilles "Clients" mais sans les trier en alphabetique

si ligne 14 active et call TriAlpha en commetaire cela fonctionne : il y a bien tri alphabetique dans feuille "clients" apres ajout des données.


j'ajoute que j'ai bien mis des . devant chaque Range
arthur83fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 19h11   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
désolé je comprends toujours pas


pour ta ligne 14 tu as oublié de préciser sur quel classeur et sur quelle feuille devait agir ton tri ... Pour éviter les erreurs il faut toujours préfixer les "range.." par le classeur et la feuille concernée... (un with peu aider à faire cela ..)
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/10/2011, 10h52   #7
Invité de passage
 
Homme
retraité
Inscription : juillet 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 28
Points : 4
Points : 4
bonjour,

voila j'ai tenu compte de vos remarques

j'ai rajouté un with en ligne 15 afin de bien preciser ou je faisais mon tri

si j'utilise le code ci dessous, cad sans utiliser les lignes 24 et 25, j'arrive bien a obtenir le remplissage de la feuille clients ainsi que son tri.

Par contre si j'inhibe les lignes 14 a 17 et que j'active la ligne 24,25 ( procedure de tri) la j'obtiens l'enregistrement des données dans la feuille "clients" mais je n'obtiens pas le tri de celle ci.

j' espere m'être bien expliqué


ma question est pourquoi cela coince t il avec la procedure Tri Alpha ligne 31 a 37 ?


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
' test pour eviter les doublons dans onglet "Clients"
 
 
Dim Cellule As Range
Dim TestNomPrenom As String
 
TestNomPrenom = TextBox2Nom.Value + TextBox3Prenom.Value
 
With Worksheets("Clients").Range("K3:K65536")
    Set Cellule = .Find(TestNomPrenom, Lookat:=xlWhole)
    If Cellule Is Nothing Then
        'MsgBox ("pas trouvé")
        Call EntreeClient
        ' tri alphabetique Nom et Prenom de la feuille "clients"
        With Worksheets("Clients")
        Range("B3:K3000").Sort Key1:=Range("B3"), Order1:=xlAscending, Key2:=Range("C3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
        End With
    End If
End With
 
'Fermeture de la UserForm  les choix et les diffrentes saisies sont perdues effacées
Unload UserForm1
 
' appel procedure de tri de la feuille "Clients"
'Call TriAlpha
 
' affichage onglet Acceuil
Worksheets("Acceuil").Select
 
End Sub
Sub TriAlpha()
 
With Worksheets("Clients")
 
    .Range("B3:K3000").Sort Key1:=.Range("B3"), Order1:=xlAscending, Key2:=.Range("C3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
 
End With
 
End Sub
arthur83fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 11h08   #8
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Encore une fois,le with en ligne 15 ne sert à rien si tu ne rajoute pas des points "." pour définir l'endroit ou celui-ci doit agir :

Citation:
Envoyé par bbil Voir le message
j'ai pas relu tout le code mais lorsque tu utilise with ..:

Code :
With Worksheets("Clients")
ensuite toutes les variables qui doivent avoir ce "with" comme racine doit commencer par un point .
donc tous les range de ton tri :

Code :
.Range("B3:K3000").Sort Ke.....
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/10/2011, 11h12   #9
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
Citation:
j'ai rajouté un with en ligne 15 afin de bien preciser ou je faisais mon tri
Apparemment tu n'as pas compris totalement les remarques de Bbil


Sinon, essaies ceci
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Dim Cellule As Range
Dim TestNomPrenom As String
 
TestNomPrenom = TextBox2Nom.Value & TextBox3Prenom.Value
If TestNomPrenom <> "" Then
    With Worksheets("Clients")
        Set Cellule = .Range("K:K").Find(TestNomPrenom, Lookat:=xlWhole)
        If Cellule Is Nothing Then
            Call EntreeClient
            ' appel procedure de tri de la feuille "Clients"
            Call TriAlpha
        Else
            Set Cellule = Nothing
        End If
    End With
End If
'Fermeture de la UserForm  les choix et les diffrentes saisies sont perdues effacées
Unload UserForm1
End Sub
Private Sub TriAlpha()
 
With Worksheets("Clients")
    .Range("B3:K3000").Sort Key1:=.Range("B3"), Order1:=xlAscending, Key2:=.Range("C3"), Order2:=xlAscending, Header:=xlGuess
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/10/2011, 12h01   #10
Invité de passage
 
Homme
retraité
Inscription : juillet 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 28
Points : 4
Points : 4
bonjour,

merci de vos reponse

pour bbil :
oupps mauvais copier coller désolé

pour mercatog :
le code fournit fonctionne


mais je comprends toujours pas pourquoi quand je faisais appel a Sub TriAlpha dans mon code, cette routine ne faisait pas le tri des données dans la feuille clients
arthur83fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 12h07   #11
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Tu déchargeais ton userform avant que l'appel de TriAlpha est fait.
Remarque ceci par ces 2 exemples

Mets un userform avec 2 boutons et teste-les comme ceci:
Code :
1
2
3
4
5
Private Sub CommandButton1_Click()
 
MsgBox "CODE 1"
Unload Me
End Sub
Code :
1
2
3
4
5
Private Sub CommandButton2_Click()
 
Unload Me
MsgBox "CODE 2"
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/10/2011, 12h22   #12
Invité de passage
 
Homme
retraité
Inscription : juillet 2011
Messages : 28
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : retraité

Informations forums :
Inscription : juillet 2011
Messages : 28
Points : 4
Points : 4
bonjour,

merci encore pour vos réponses et votre patience

pour mercatog:
c'était un truc tout bête qui ne me sautait pas aux yeux grrr
je vais vraiment changer de lunette lol
arthur83fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h52.


 
 
 
 
Partenaires

Hébergement Web