IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Formulaire sous excel/VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut Formulaire sous excel/VBA
    Bonjour à tous

    voilà j'ai un petit problème sur excel/vba. je suis totalement débutant sur ça mais je dois faire dans le cadre d'un stage un petit programme pour gérer une liste de fournisseurs.

    Voici comment se pose mon problème: j'ai une liste de fournisseurs sous un format excel (Nom en "A", Prénom en "B", etc..) et je dois créé un formulaire pour rajouter des nouveaux fournisseurs à l'aide d'un userform. Ils doivent rejoindre la liste et se classer par ordre alphabétique.

    J'ai créé mon formulaire qui se compose de 6 variables à renseigner et des boutons "Ajout" et "Annuler".

    voilà un peu où j'en suis pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Annuler_Click()
        Unload Me
    End Sub
     
    Private Sub AjouterIntervenant_Click()
     
     
    Nomconverti = Application.WorksheetFunction.Proper(Me.TextNom)
    Prenomconverti = Application.WorksheetFunction.Proper(Me.TextPrénom)
     
    Sheets("Feuil1").Cells(A).Value = Me.TextNom
    Sheets("Feuil1").Cells(B).Value = Me.TextPrénom
    Sheets("Feuil1").Cells(C).Value = Me.TextTéléphone
    Sheets("Feuil1").Cells(D).Value = Me.TextMail
    Sheets("Feuil1").Cells(E).Value = Me.TextEntreprise
    Sheets("Feuil1").Cells(F).Value = Me.TextAdresse
    Unload Me
     
    End Sub
    Pour l'instant je devrais avoir les noms qui se rajoutent au fur et à mesure mais ça coince.

    Pouvez-vous m'aider sur ce petit problème.

    Merci

    ps: Pour info j'utilise Excel 2007 sur Vista

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    essaies ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub AjouterIntervenant_Click()
    Dim nl As Integer
    With Sheets("Feuil1")
    nl = .Range("a100000").End(xlUp).Row
    'là je n'ai pas regardé
    Nomconverti = Application.WorksheetFunction.Proper(Me.TextNom)
    Prenomconverti = Application.WorksheetFunction.Proper(Me.TextPrénom)
    'la oui
    .Cells(nl, 1).Value = Me.TextNom
    .Cells(nl, 2).Value = Me.TextPrénom
    .Cells(nl, 3).Value = Me.TextTéléphone
    .Cells(nl, 4).Value = Me.TextMail
    .Cells(nl, 5).Value = Me.TextEntreprise
    .Cells(nl, 6).Value = Me.TextAdresse
    End With
    Unload Me
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Classe merci beacoup ça marche.

    En fait si j'ai bien compris, tu rajoutes le nom et tu le fais remonter jusqu'à la première ligne vide?

    Maintenant ce que j'aimerais c'est que le fournisseur viennent se rajouter par ordre alphabétique dans la liste que j'ai déjà.

    ps: Désolé de te demander ça mais étant complètement novice je n'ai pas compris à quoi sert ces lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim nl As Integer
    With Sheets("Feuil1")
    C'est pour déclarer une variable du genre "i"?

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Dim nl As Integer

    c'est une variable à laquelle je donne la valeur de ta derniere cellule non vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nl = .Range("a100000").End(xlUp).Row
    'là j'ai mis 100000 parce que tu es sur excel 2007

    évite de répéter sans cesse le nom de la feuille sans oublier de mettre end with à la fin
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with sheets("feuil1")
    nl=.Range("a100000").End(xlUp).Row
    end with
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nl = sheets("feuil1").Range("a100000").End(xlUp).Row
    pour ton fournisseur qui viendrait s'intégrer dans l'ordre alphabétique, pour ma part je continuerais à le mettre à la suite des autres et provoquerais un tri en fin de code
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Ok merci pour vos explications. j'ai à peu prêt résolu mon problème. Je vais essayer tout seul et je reviendrai si j'ai d'autres soucis

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par casefayere Voir le message
    là j'ai mis 100000 parce que tu es sur excel 2007
    Bonjour casefayere,
    juste pour info, permet de ne pas tenir compte de la version...
    A+

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour T'chiben,

    Vous dites que vous avez mis 100000 à cause de Excel 2007, pourquoi?
    Les versions précédentes pouvaient contenir un maximum de65536 lignes.

    On aurait donc écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nl = .Range("A65536").End(xlUp).Row
    La version 2007 peut contenir 1.048.576 lignes, on peut donc écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nl = .Range("A1048576").End(xlUp).Row

    Dans ce code qu'elle est la fonction qui permet d'incrémenter à ligne suivante?
    il suffit d'ajouter "+1" après "Row"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nl = .Range("A1048576").End(xlUp).Row+1
    il ne faut pas, évidemment, que la dernière ligne soit utilisée (ce qui n'est d'ailleurs jamais conseillé).

    Remarque : à l'avenir n'hésitez pas à créer un nouveau sujet qui peut faire référence à celui-ci (vous copiez l'URL du sujet dans votre question) et vous indiquez un titre explicite et la version que vous utilisez (Choisir "Intitulé" à gauche du titre.

    Vous pouvez regarder ici pour connaître les règles du forum :
    http://club.developpez.com/regles/

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut
    Bonjour,

    Je suis aussi nouveau en Excel / VBA.
    Je viens de voir ce code et j'avais quelques questions car je ne comprends pas tous...

    Citation Envoyé par casefayere Voir le message
    nl = .Range("a100000").End(xlUp).Row
    Vous dites que vous avez mis 100000 à cause de Excel 2007, pourquoi?

    Dans ce code qu'elle est la fonction qui permet d'incrémenter à ligne suivante?

    merci

Discussions similaires

  1. Formulaire sous excel 2000
    Par morfy93 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2007, 10h40
  2. creation de formulaire sous access VBA
    Par Elstak dans le forum VBA Access
    Réponses: 4
    Dernier message: 20/05/2007, 01h57
  3. [VBA-E]Execution d'une macro access sous excel VBA
    Par virtualinsanity dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 21/04/2006, 17h27
  4. Comment exporter un formulaire sous excel
    Par Naud dans le forum Access
    Réponses: 5
    Dernier message: 12/10/2005, 10h44
  5. Exporter un sous formulaire sous excel
    Par titou dans le forum Access
    Réponses: 3
    Dernier message: 14/02/2005, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo