crognon
Messages postés4Date d'inscriptionlundi 13 avril 2009StatutMembreDernière intervention13 avril 2009
-
13 avril 2009 à 14:37
crognon
Messages postés4Date d'inscriptionlundi 13 avril 2009StatutMembreDernière intervention13 avril 2009
-
13 avril 2009 à 19:36
Bonjour à tous et à toutes,
Je suis de nouveau ici, de plus j'ai pas l'habitude de forum,
Par avance désoler pour les fautes d'orthographe et les formules de phrase ( moi et le français sa fais deux...)
J'ai début dans les macro sous excel ,
Le but de cette réussir, a partir d'une fenêtre principale , je fais appel a une autre fenetre qui permet d'entrer les information dans les feuilles excel et une autre qui permet de lire les informations a parti d'une feuille d'excel,
Mais avant d'arriver jusqu'ici, j'ai eu deux prôblème
mon 1er problème c'est cette code dans le module ne fonctionne pas :
Sub ProgPrincSaisieClients()
Sheets("Clients").Activate 'activation de la feuille Clients
FenetreSaisieClients.Show End Sub
et quand lance marque erreur '424' ; ça vient de la ligne "FenetreSaisieClients.Show" pourtant la fenêtre s'appel bien SaisieClients.xls mon second prôblème dans userform :
Private Sub ButtonAnnuler_Click()
Unload.Me End Sub
il me marque erreur de compilation : Argument non facultatif
Je vous remercie par avance de pencher a mes problèmes
Cordialement,
Crognon.
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 13 avril 2009 à 17:38
bonjour
tu dis que ta fenetre s'appelle SaisieClients.xls ce qui n'est pas possible
le point(.) n'est pas autrisé dans le nom d'une fenetre (userform)
donc ton FenetreSaisieClients.Show doit être remplacé par userform1.show
ou si tu as changé le nom du userform
NomDuSserform.show
pour le deuxieme point ce n'est pas
Unload.Me
mais
Unload Me
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 13 avril 2009 à 18:52
call unload (me)
est absolument identique à
unload me
le call est, à mon avis, une survivance de versions bien plus anciennes du Basic
quand à ta deuxieme question c'est normal puisque tu rempli la cellule avant de faire le test
Sheets("Clients").Range("B2").Value = Me.TextBoxNom.Text
' On teste la saisie du nom
If Me.TextBoxNom.Text = "" Then
MsgBox "Vous devez entrer un nom."
Me.TextBoxNom.SetFocus
Exit Sub
End If
tu aurais dû faire
' On teste la saisie du nom
If Me.TextBoxNom.Text = "" Then 'si TextBoxNomest vide
MsgBox "Vous devez entrer un nom."
Me.TextBoxNom.SetFocus
Exit Sub
End If
Sheets("Clients").Range("B2").Value = Me.TextBoxNom.Text
mais le mieux serait encore de regrouper toutes tes lignes de remplissage apres l'ensemble des tests comme ça tu ne remplis ton tableau excel que si toutes les données ont été saisies
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 13 avril 2009 à 19:22
ces deux lignes, à mon avis, doivent pas être au début mais juste avant les lignes de remplissage
Sheets("Clients").Rows(2).Insert
Range("B2").Font.Bold = True
en toute logique dans ta macro il faut commencer par les tests puis ensuite faire l'insertion de la ligne, la mise en forme et le remplissage des données
en gros, ne rien faire dans la feuille excel avant que toutes les données aient été saisies par l'utilisateur
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 13 avril 2009 à 19:23
pour voir si tout se passe comme désiré tu as la touche F8 qui te permet d'éxécuter ta macro ligne par ligne ainsi si une action n'est pas au bon endroit tu le verra plus facilement
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
Vous n’avez pas trouvé la réponse que vous recherchez ?
crognon
Messages postés4Date d'inscriptionlundi 13 avril 2009StatutMembreDernière intervention13 avril 2009 13 avril 2009 à 18:29
Merci de tes réponses
pour le premier je croyais que c'était le nom de la fenêtre active ( je me cache sous le sac )
elle fonctionne maintenant
pour le deuxième aussi mais j'ai remplacer par " call unload (me) " pourras-tu m'expliquer qu'elle est la difference
j'ai un autre question encore sous cette code
Private Sub ButtonOK_Click()
Sheets("Clients").Rows(2).Insert
Range("B2").Font.Bold = True
Sheets("Clients").Range("A2").Value = Me.ComboBoxTitre.Text
MsgBox "Vous devez choisir dans une liste."
Me.ComboBoxTitre.SetFocus
Exit Sub
Sheets("Clients").Range("B2").Value = Me.TextBoxNom.Text
' On teste la saisie du nom
If Me.TextBoxNom.Text = "" Then
MsgBox "Vous devez entrer un nom."
Me.TextBoxNom.SetFocus
Exit Sub
End If
Sheets("Clients").Range("C2").Value = Me.TextBoxPrénom.Text
' On teste la saisie du prénom
If Me.TextBoxPrénom.Text = "" Then
MsgBox "Vous devez entrer un prénom."
Me.TextBoxPrénom.SetFocus
Exit Sub
End If
Sheets("Clients").Range("D2").Value = Me.TextBoxTél.Text
' On teste la saisie du prénom
If Me.TextBoxTél.Text = "" Then
MsgBox "Vous devez entrer un numéro téléphone."
Me.TextBoxTél.SetFocus
Exit Sub
End If
' Conversion du nom et prénom en NOMPRPRE
Nomconverti = Application.WorksheetFunction.Proper(Me.TextBoxNom.Text)
Prenomconverti = Application.WorksheetFunction.Proper(Me.TextBoxPrénom.Text)
' Mise en place des valeurs saisies
Range("A65536").End(xlUp).Offset(1, 0).Value = Nomconverti
Range("B65536").End(xlUp).Offset(1, 0).Value = Prenomconverti
'tri de la liste de données dans l'ordre croissant des noms (deuxième colonne).
Call Sheets("Clients").Range("A1"). _
Sort(Key1:=Sheets("Clients").Columns("B"), Header:=xlYes)
Call Unload(Me)
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
i = 1
Do Until IsEmpty(Worksheets("Divers").Range("A" & i))
Call Me.ComboBoxTitre.AddItem(Worksheets("Divers"). _
Range("A" & i).Value)
i = i + 1
Loop
End Sub
quand je ne saisie pas dans le champ, il m'envoie bien le message que je dois obliger remplir les champs mais le problème c'est que il m'insere un champ vide dans la feuille excel a chaque clique
crognon
Messages postés4Date d'inscriptionlundi 13 avril 2009StatutMembreDernière intervention13 avril 2009 13 avril 2009 à 19:15
je te remercie encore de m'avoir
j'ai tous regrouper de plus la lecture est plus lisible
sa fonctionne bien mais a chaque oublie d'un champs il m'insère une ligne vierge
il faut t-il que je rajoute une ligne
crognon
Messages postés4Date d'inscriptionlundi 13 avril 2009StatutMembreDernière intervention13 avril 2009 13 avril 2009 à 19:36
Tous est rentré dans l'ordre
Merci pour l'info de la touche F8
je vais encore continuer ranger pour perfectionner comme les téléphone obliger de mettre en chiffre avec des espaces et non des lettres ou mettre les nom en majuscule gras