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 28/12/2011, 12h22   #1
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Par défaut Formulaire Modification/Ajout, votre opinion

Bonjour à tous,

Voila, j'ai une application de traitement des opérations de modification et d'ajout (Un grand merci pour mercatog)

Il y a un traitement spécial pour le bouton "Annuler".

Et pour cela j'ai utilisé les variables TypeEntree et Annu.

TypeEntree sert à déterminer :

- Si on travaille avec deux données (tbAD et tbPt), TypeEntree=1

- Si on travaille avec six données (tbN, tbTr, tbPr, tbL3, tbAD, tbPt), TypeEntree=2

Annu sert à déterminer :

- Si l'annulation doit se faire dans le formulaire (Réinitialiser deux ou six champs), Annu=1

- Si l'annulation doit se faire dans la feuille (Ex et Fx ou Ax, Bx, Cx, Dx, Ex et Fx), Annu=2

Reste un petit problème a propos de la touche tabulation, car lorsque je l'utilise depuis le premier Textbox au deuxième par exemple, il vient se positionner à la dernière position au lieu de la deuxième (Parce qu'il y a un "T" en premier).

Je vous laisse découvrir le reste de l'application et je serais très ravi de lire vos opinions pour des éventuelles corrections

Merci d'avance.

Fichiers attachés
Type de fichier : zip Formulaire_Modif-Ajout.zip (27,0 Ko, 11 affichages)
apt est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/12/2011, 13h12   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Supprime les .SetFocus, ils sont inutile, c'est VB qui gère en fonction des TabIndex et TabStop contenus dans les composants placés sur ton Userform.

La propriété TabKeyBehavior doit être défini à False dans tes TextBox (à moins que tu ais besoin de gérer des tabulation dans tes textbox, mais dans ce cas, tu ne pourras pas utiliser TAB pour changer de textbox.


Code :
1
2
3
4
5
6
7
8
9
10
Private Sub tbN_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then
        With tbTr
            .Text = "T"
            .SelStart = Len(.Text)
            'Pas besoin VBA va géréer tout seule le passage au textbox suivant selon l'ordre défini par les TabIndex de chaque composant du Userform
            '.SetFocus
        End With
    End If
End Sub
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 20h25   #3
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Bonsoir Qwazerty,

Je l'ai enlevé (Setfocus), mais voila quand j'enfonce la touche Tab, le curseur vient sur le "T" au lieu de se positionner après (2eme position).

Il se passe la même chose pour le reste des textbox (il se positionne sur la dernière position au lieu de la première)

Comment corriger cela ?
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 13h42   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
Je n'avais pas saisi le fonctionnement désiré.

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub tbN_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then
        KeyCode = 0
        With tbTr
            .Text = "T"
            .SelStart = Len(.Text)
            .SetFocus
        End With
    End If
End Sub
++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 21h02   #5
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Bonsoir Qwazerty,

C'est trés bien, ça marche maintenant

Y a-t-il autres commentaires ou des corrections à apporter ?

Merci

apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 21h18   #6
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Ici
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Annuler()
    Select Case Annu
    Case 1    ' effacement des champs du formulaire
        Select Case TypeEntree
        Case 1
            tbAD.Text = ""
            tbPt.Text = "Pt"
        Case 2
                        Vider
        End Select
    Case 2    'effacement de la rangée saisie
        Select Case TypeEntree
        Case 1: Range("E" & LaLig & ":F" & LaLig).ClearContents
        Case 2: Range("A" & LaLig & ":F" & LaLig).ClearContents
        End Select
 
        ' Vider
    End Select
 
End Sub
Précise peut être la feuille sur laquelle tu travailles au niveau des ranges que tu effaces.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub UserForm_Initialize()
 
'initialiser les champs
    tbN.Text = ""
    tbTr.Text = "Tr."
    tbPr.Text = "Pr"
    tbL3.Text = "L3-"
    tbAD.Text = ""
    tbPt.Text = "Pt"
 
    Call AfficheBoutons
 
End Sub
Autant appeler Vider() pour définir le contenu des TxtBox.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 23h23   #7
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
J'ai remplacé ceci :

Code :
1
2
3
4
5
6
Case 2    'effacement de la rangée saisie
        Select Case TypeEntree
        Case 1: Range("E" & LaLig & ":F" & LaLig).ClearContents
        Case 2: Range("A" & LaLig & ":F" & LaLig).ClearContents
        End Select
    End Select
par cela :

Code :
1
2
3
4
5
6
7
8
 Case 2    'effacement de la rangée saisie
        With Worksheets("BD")
            Select Case TypeEntree
            Case 1: .Range("E" & LaLig & ":F" & LaLig).ClearContents
            Case 2: .Range("A" & LaLig & ":F" & LaLig).ClearContents
            End Select
        End With
    End Select
Est-ce juste cette syntaxe ?
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 12h30   #8
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Bonjour,

Voila une autre explication de cette petite application pour ce qui n'ont pas pu comprendre le fonctionnement.

On a un tableau qui contient des numéros en colonne A, et des références en colonne B, C et D.

S’il trouve qu’il y a des données à ajouter, correspondantes à un tel numéro N, on doit utiliser le formulaire de saisie.

Dans le premier textbox du formulaire, on saisira le numéro pour lequel on devra compléter ou ajouter des données selon que le numéro a été trouvé dans le tableau principale ou non.

Si la recherche aboutie, les quatre premières textbox sont remplies par les 4 données récupérées du tableau correspondantes aux colonnes À, B, C et D.

La textbox5 (tbAD) et textbox6 (tbPt) seront vides pour une saisie complémentaire de données.

Si le numéro en question ne s’y trouve pas dans la colonne A, les six textbox du formulaire seront vides pour un nouvel ajout.

Le bouton Annuler est là pour exécuter différentes cas de suppression.

1 – TypeEntree = 1 (On travaille avec deux valeurs)

La suppression se fera depuis :

A – le formulaire (tbAD et tbPt) si Annu = 1
B – la feuille (Range("E" & Lalig & ":F" & Lalig) si Annu = 2

2 – TypeEntree = 2 (On travaille avec six valeurs)

La suppression se fera depuis :

A – le formulaire (tbN, tbTr, tbPr, tbL3, tbAD et tbPr) si Annu = 1
b- la feuille (Range("A" & Lalig & ":F" & Lalig) si Annu = 2

J’espère avoir bien exposé le fonctionnement de cette petite application.

apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 00h02   #9
apt
Membre du Club
 
Inscription : mai 2002
Messages : 526
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 526
Points : 42
Points : 42
Bonjour à tous,

Une nouvelle version : Ajout d'un module de classe pour les TextBox

A vos commentaires
Fichiers attachés
Type de fichier : xls Formulaire_Modif-Ajout (v2).xls (75,5 Ko, 4 affichages)
apt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h11.


 
 
 
 
Partenaires

Hébergement Web