VBA Excel : base de donnée courrier
Résolu
sifusalade
Messages postés
142
Statut
Membre
-
Pit3ull Messages postés 19 Statut Membre -
Pit3ull Messages postés 19 Statut Membre -
Bonjour,
Je voudrais créer une base de donnée de courriers recommandés pour le boulot.
J'ai fait un tableau excel qui ressemble à ça
http://img11.hostingpics.net/pics/937530Capturedcran20120802194617.png
En bas, une partie fixe où l'on rempli les données qui iront s'insérer dans le tableau du dessus en cliquant sur le bouton.
Je voudrait que les cellules de la partie du haut ne soient rentrées que par le formulaires du bas.
J'ai mis le formulaire à partir de la ligne 3000 et j'ai fractionné les fenêtres. Je suis en train de pécher sur le gestionnaire d'erreur. En cliquant sur le bouton, les données saisie vont se rajouter sous la dernière ligne du tableau écrite. Sauf que, je voudrais bloquer le processus si les cellules B30001, B3003 et B3004 sont vides et obliger l'utilisateur à les compléter pour valider la saisie.
Il y a peur être mieux comme méthode pour enregistrer ces données. Je suis preneur de tout conseils.
Pour info, voici la macro que j'ai affectée au bouton (et que je n'ai pas fini du coup vu que je pèche lol)
En vous remerciant grandement pour l'aide que vous pourrez m'apporter.
Je voudrais créer une base de donnée de courriers recommandés pour le boulot.
J'ai fait un tableau excel qui ressemble à ça
http://img11.hostingpics.net/pics/937530Capturedcran20120802194617.png
En bas, une partie fixe où l'on rempli les données qui iront s'insérer dans le tableau du dessus en cliquant sur le bouton.
Je voudrait que les cellules de la partie du haut ne soient rentrées que par le formulaires du bas.
J'ai mis le formulaire à partir de la ligne 3000 et j'ai fractionné les fenêtres. Je suis en train de pécher sur le gestionnaire d'erreur. En cliquant sur le bouton, les données saisie vont se rajouter sous la dernière ligne du tableau écrite. Sauf que, je voudrais bloquer le processus si les cellules B30001, B3003 et B3004 sont vides et obliger l'utilisateur à les compléter pour valider la saisie.
Il y a peur être mieux comme méthode pour enregistrer ces données. Je suis preneur de tout conseils.
Pour info, voici la macro que j'ai affectée au bouton (et que je n'ai pas fini du coup vu que je pèche lol)
Sub Macro2()
On Error GoTo ErreurNum
On Error GoTo ErreurDateEnvoi
On Error GoTo ErreurObjet
Dim numero As Long
Dim objet As String
Dim dateEnvoi As Date
Dim dateNotif As Date
'Copie des données du formulaire situé en bas
Range("B3001:B3006").Select
Application.CutCopyMode = False
Selection.Copy
'gestionnaire d'erreur
numero = Range("B3001")
objet = Range("B3003")
dateEnvoi = Range("B3004")
dateNotif = Range("B3005")
If numero = "" Then
GoTo ErreurNum
End If
ErreurNum = MsgBox("Saisir un numéro pour continuer")
ErreurDateEnvoi = MsgBox("Saisir une date d'envoi pour continuer")
ErreurObjet = MsgBox("Saisir un objet pour continuer")
Exit Sub
'Test pour determiner la ligne où coller les infos dans le Tableau'
Sheets("Base de données").Select
valeurA2 = Range("A2")
If valeurA2 = "" Then
Range("A2").Select
Else
Range("B2999").Select
Selection.End(xlUp).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
'Memorise le N° de la ligne où coller les données'
ligne_de_base = ActiveCell.Row
'Collage avec transposition
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
'Rendre vierge le formulaire'
Range("B3001:B3006").Select
Selection.ClearContents
Range("B3002").Select
ActiveCell.FormulaR1C1 = "BLABLA"
'Range("B3001").Select
End Sub
En vous remerciant grandement pour l'aide que vous pourrez m'apporter.
A voir également:
- VBA Excel : base de donnée courrier
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
9 réponses
bonjour,
une proposition juste pour répondre au besoin
Si vous tenez à utiliser On Error, l'aide VBA est bien documentée.
Pour obliger l'utilisateur à rentrer les données en B3001,... , protégez la feuille (sans oublier de définir la plage (B3001 à B3005) comme restant modifiable)
la macro commencera alors par:
Bonne suite
une proposition juste pour répondre au besoin
'gestionnaire d'erreur
If Range("B3001").Value = "" Then
MonMessage = MonMessage & "un numéro" & Chr(13)
End If
If Range("B3003").Value = "" Then
MonMessage = MonMessage & "un objet" & Chr(13)
End If
If Range("B3004").Value = "" Then
MonMessage = MonMessage & "une date d'envoi" & Chr(13)
End If
If Range("B3005").Value = "" Then
MonMessage = MonMessage & "une date de notification" & Chr(13)
End If
If MonMessage <> "" Then
MsgBox "Vous devez saisir" & Chr(13) & MonMessage & "pour continuer"
Exit Sub
End If
à insérer entre la déclaration des variable et 'Copie des données du formulaire situé en bas . Toute la partie gestion d'erreur peut être supprimée.
Si vous tenez à utiliser On Error, l'aide VBA est bien documentée.
Pour obliger l'utilisateur à rentrer les données en B3001,... , protégez la feuille (sans oublier de définir la plage (B3001 à B3005) comme restant modifiable)
la macro commencera alors par:
ActiveSheet.Unprotect "MonMotdePasse"et se terminera par
ActiveSheet.Protect "MonMotdePasse"
Bonne suite
La réponse pour le gestionnaire d'erreur fonctionne. Merci beaucoup !
Mais je suis confronté à un autre problème... je le poste ici au lieu de créer un nouveau sujet, puisque ça concerne le même fichier.
Le fractionnement de fenêtre avec le formulaire situé très bas dans la feuille est ce que voulait le demandeur, mais, les utilisateurs préférèrent remplir via userform. J'ai donc créé un userform avec des zones de texte pour remplir tout les champs et un ComboBox pour sélectionner le destinataire. Mon souci c'est que je n'arrive pas à alimenter ma ComboBox. J'ai cherché sur le net et essayé les différentes méthodes proposées mais ma liste reste vide. J'ai une feuille "Adresses" que je veux me servir comme source pour cette liste.
Voici mon code :
ListeDestinataire étant le nom que j'ai donné au ComboBox
(la première adresse commence en A3 car les deux première ligne sont utilisées par des titres)
En vous remerciant par avance.
Mais je suis confronté à un autre problème... je le poste ici au lieu de créer un nouveau sujet, puisque ça concerne le même fichier.
Le fractionnement de fenêtre avec le formulaire situé très bas dans la feuille est ce que voulait le demandeur, mais, les utilisateurs préférèrent remplir via userform. J'ai donc créé un userform avec des zones de texte pour remplir tout les champs et un ComboBox pour sélectionner le destinataire. Mon souci c'est que je n'arrive pas à alimenter ma ComboBox. J'ai cherché sur le net et essayé les différentes méthodes proposées mais ma liste reste vide. J'ai une feuille "Adresses" que je veux me servir comme source pour cette liste.
Voici mon code :
Private Sub UserForm1_Activate()
Sheets("Adresses").Select
Me.ListeDestinataire.RowSource = "a3:" & Range("a3").End(xlDown).Range
End Sub
ListeDestinataire étant le nom que j'ai donné au ComboBox
(la première adresse commence en A3 car les deux première ligne sont utilisées par des titres)
En vous remerciant par avance.
bonjour,
S'il y a autre chose, ouvrez un nouveau posr .
Bonne suite
Me.ListeDestinataire.RowSource = "a3:" & Range("a3").End(xlDown).Address
S'il y a autre chose, ouvrez un nouveau posr .
Bonne suite
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai déjà essayé. J'ai même essayé de créer une variable
Mais rien à faire, dès que je fais dérouler ce ComboBox, il reste vide
Merci beaucoup, je vais créer une nouveau sujet.
Dim SourceDestinataire as Range Me.ListeDestinataire.RowSource = SourceDestinataire
Mais rien à faire, dès que je fais dérouler ce ComboBox, il reste vide
Merci beaucoup, je vais créer une nouveau sujet.
Bonjour,
essaie avec .list qui pose moins souvent de problème :
eric
essaie avec .list qui pose moins souvent de problème :
Sheets("Adresses").Select
ListeDestinataire.List = Range("A3:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
eric
Cela ne marche pas. Merci
PS : Je ne sais pas comment clôturer le sujet, j'ai créer une autre sujet ici
https://forums.commentcamarche.net/forum/affich-25777033-vba-excel-alimenter-combobox#p25777280
PS : Je ne sais pas comment clôturer le sujet, j'ai créer une autre sujet ici
https://forums.commentcamarche.net/forum/affich-25777033-vba-excel-alimenter-combobox#p25777280
Salut clique sur ta combobox et dans le menu des propriete a droite y'a un truc du genre Items...
Tu as juste a les rajouter !
Tu as juste a les rajouter !
Bonjour,
Je ne sais pas si j'ai bien compris ton problème, mais si c'est le cas, je pense que ce tuto va le résoudre : http://www.polykromy.com/blog/excel-base-de-donnees.htm (regarde la vidéo en bas) si tu es intéressé voici le tuto pour le faire : http://www.polykromy.com/blog/d1.html
Il y plusieurs vidéos, à la fin de la lecture, il suffit de cliquer sur suivant en haut de la page, pour passer à l'étape suivante :)
Je ne sais pas si j'ai bien compris ton problème, mais si c'est le cas, je pense que ce tuto va le résoudre : http://www.polykromy.com/blog/excel-base-de-donnees.htm (regarde la vidéo en bas) si tu es intéressé voici le tuto pour le faire : http://www.polykromy.com/blog/d1.html
Il y plusieurs vidéos, à la fin de la lecture, il suffit de cliquer sur suivant en haut de la page, pour passer à l'étape suivante :)