Formulaire sous excel/VBA

  • Initiateur de la discussion Initiateur de la discussion columbus033
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

columbus033

Guest
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:

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 sous Vista
 
Dernière modification par un modérateur:
Re : Formulaire sous excel/VBA

bonjour columbus033 et bienvenue sur le forum

à tester :
remplacer
Code:
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
par
Code:
With Sheets("Feuil1")
    derniereLigne = .Cells(.Rows, 1).End(xlUp).Row + 1
    .Cells(derniereLigne, 1).Value = Me.TextNom
    .Cells(derniereLigne, 2).Value = Me.TextPrénom
    .Cells(derniereLigne, 3).Value = Me.TextTéléphone
    .Cells(derniereLigne, 4).Value = Me.TextMail
    .Cells(derniereLigne, 5).Value = Me.TextEntreprise
    .Cells(derniereLigne, 6).Value = Me.TextAdresse
End With
à tester
 
Re : Formulaire sous excel/VBA

Bonjour,

essaie ainsi :

Code:
Private Sub AjouterIntervenant_Click()

Dim DerLig As Long
Dim NomConverti As String, PrenomConverti As String
NomConverti = Application.WorksheetFunction.Proper(Me.TextNom)
PrenomConverti = Application.WorksheetFunction.Proper(Me.TextPrénom)

With Sheets("Feuil1")
    DerLig = .[A65000].End(xlUp).Row + 1
    .Cells(DerLig, 1).Value = NomConverti
    .Cells(DerLig, 2).Value = PrenomConverti
    .Cells(DerLig, 3).Value = Format(Me.TextTéléphone, "0#"" ""##"" ""##"" ""##"" ""##")
    .Cells(DerLig, 4).Value = Me.TextMail
    .Cells(DerLig, 5).Value = Me.TextEntreprise
    .Cells(DerLig, 6).Value = Me.TextAdresse
End With
Unload Me

End Sub

Eit, bonjour mromain, pas raffraîchi....
 
Re : Formulaire sous excel/VBA

Merci les gars ça me rajoute la ligne nikel. Maintenant ce que j'aimerai c'est que ce nouveau fournisseur vienne se ranger dans ma lisye et se classe par ordre alpha.

ps: bhbh ce format ici
"0#"" ""##"" ""##"" ""##"" ""##"
me sert en fait à bloquer un mauvais format de numéro c'est ça?
 
Re : Formulaire sous excel/VBA

Re,
non, ce code te sert à mettre ton numéro de téléphone au format téléphonique
Format/Cellule/Spécial : Numéro de téléphone

Pour le tri de ta base, est-ce que tu as des titres, et si oui, à quelle ligne?
 
Re : Formulaire sous excel/VBA

re,
bonjou bhbh,

voici un code pour le tri :
Code:
With ThisWorkbook.Sheets("Feuil1")
    
    colonneTri = 1 'colonne qui va servir de critère de tri
    
    premiereLigne = 2 'limite de la zone à trier
    premiereColonne = 1 'limite de la zone à trier
    
    derniereLigne = .Cells(.Rows.Count, premiereColonne ).End(xlUp).Row 'limite de la zone à trier
    derniereColonne = .Cells(premiereLigne , .Columns.Count).End(xlToLeft).Column 'limite de la zone à trier
    
    .Range(.Cells(premiereLigne, premiereColonne), .Cells(derniereLigne, derniereColonne)).Sort key1:=.Cells(premiereLigne, colonneTri), order1:=xlAscending
    
End With

a+
 
Re : Formulaire sous excel/VBA

Re bonjour,

voilà j'essaye de "m'amuser" un peu avec ce petit programme et j'ai un nouveau petit problème.

En fait quand je rajoute un nouveau fournisseur dans la liste cela la décale d'une ligne vers le bas. Normal vous me direz. Sauf que ma liste est "bordurée" sur chaque côté et donc à chaque fois la dernière se retrouve à nue.

J'ai essayé de regardé ce que cela fait avec un enregistrement de macro et de le transposer dans mon cas et voilà ce que j'ai fait:

With DerLig.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With DerLig.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With DerLig.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With DerLig.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With DerLig.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With DerLig.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With

Mais ça ne marche pas. Je l'ai placé après le "end with" de mon rangement par ordre alphabétique.

Voilà merci de votre aide🙂
 
Re : Formulaire sous excel/VBA

Bonjour à tous.

Ne t'encomrbe pas avec le code d'enregistrement de macro : il est long et compliqué inutilement. Essaye juste de rajouter avant le End With des codes de mromain et bhbh la ligne :

Range("B" & derniereligne & ":F" & derniereligne).Borders.LineStyle = xlContinuous

Cela va tout simplement te retracer une bordure sur les cellules en question.
 
Dernière modification par un modérateur:
Re : Formulaire sous excel/VBA

Merci ça marche nikel!!

Une petite question.

Quand je fais une recherche d'un nom sur mon programme, j'aimerai m'affranchir des problèmes de casse (en gros que je ne soit pas obligé de penser à mettre une majuscule à la première lettre). Ya t-il un moyen de fair eune recherche par équivalence, cad qu'il ne ma userform cherche un nom quasi similaire?

Mon code de recherche est le suivant:

If Cells(i, 1) = TextNom Then

peut-être existe il un signe équivalent à mettre à la place du signe égal?

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

L
Réponses
4
Affichages
778
Lindsay_RBD
L
J
  • Question Question
Réponses
5
Affichages
1 K
JeanDidouille
J
I
Réponses
4
Affichages
1 K
im_Guillaume
I
  • Question Question
Réponses
6
Affichages
762
Réponses
4
Affichages
868
Retour