Formulaire sous excel/VBA

columbus033

XLDnaute Nouveau
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 édition:

mromain

XLDnaute Barbatruc
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
 

Cousinhub

XLDnaute Barbatruc
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....
 

Cousinhub

XLDnaute Barbatruc
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?
 

mromain

XLDnaute Barbatruc
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+
 

columbus033

XLDnaute Nouveau
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:)
 

micaub

XLDnaute Nouveau
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 édition:

columbus033

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
6
Affichages
248

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 517
dernier inscrit
XavG