Prôblème sur excel 2007

[Résolu]
Signaler
Messages postés
4
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
13 avril 2009
-
Messages postés
4
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
13 avril 2009
-
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.

7 réponses

Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
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
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
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
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
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
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
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
Messages postés
4
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
13 avril 2009

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
Messages postés
4
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
13 avril 2009

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
Messages postés
4
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
13 avril 2009

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

mais a tous cas je te remercie beaucoup....