Cahier d'appel

sophie34

XLDnaute Junior
Bonjour à tous,

Mes meilleurs voeux pour cette année 2015 !!!

Cela faisait un long moment que ne j'avais pas eu le besoin de créer un classeur excel avec des userforms.
Mais me voilà de retour et après plusieurs mois sans pratique, je vous avoue que je repars depuis bien loin.

Je vous explique un peu mon projet qui est très simple, par rapport à ce que j'ai pu faire auparavant.
Je souhaite informatiser notre cahier d'appel.

Dans ce classeur j'ai plusieurs feuilles de janvier à décembre.
Et dans chacune de ces feuilles, une commandbutton et son userform (pour le moment seule janvier en dispose)

Dans le userform, j'ai la date et l'heure qui s'affiche automatiquement.
Plusieurs textbox que l'on renseignera (société, nom, tel ...) correspondent à une colonne
et une combobox avec une liste à attribuer.
Mon bouton nouveau devra sauvegarder l'appel reçu et permettre d'en saisir un nouveau sans fermer l'userform.
Mon bouton fermer, sauvegarde automatiquement et ferme mon classeur excel.

Ce fichier devra être utilisable par toutes les personnes concernées d'où l'intérêt de sauvegarder automatiquement le classeur dès qu'un appel est renseigné.

J'ai rajouté dans le VBA quelques commentaires, j'ai essayé de faire les premiers codes, j'en ai effacé plusieurs afin de ne pas rendre illisible ma page de commandes.

Dans l'attente de votre aide, n'hésitez pas à commenter vos codes afin que j'imprime par la suite mes macros pour bosser dessus.

Très bonne journée !!!
Merci.
 

Pièces jointes

  • Appel.xlsm
    31.4 KB · Affichages: 96

job75

XLDnaute Barbatruc
Re : Cahier d'appel

Bonjour sophie34,

Utiliser un UserForm pour entrer ou modifier des données dans une feuille de calcul est archi-classique.

Il y a plein d'exemples sur le forum, il faut vous en inspirer et vous lancer.

Et si vous bloquez sur un point particulier, ouvrez une discussion, vous aurez de l'aide.

Bon courage.
 

camarchepas

XLDnaute Barbatruc
Re : Cahier d'appel

Bonjour Job, Sophie

Voici un début de solution :

Le passage à la ligne ce fera par Shift - Entrée dans le textbox7

Le transfert des données pourrait être mise en commun dans une routine dédiée ....

Remplacer le code du userform par celui ci :

Code:
Private Sub CommandButton1_Click()
Dim Onglet As String
Dim LigneFin As Long
'Sauvegarde info dans le bon onglet
'Trouve le nom du mois en fonction du numéro de mois de la date du jour
 Onglet = Choose(Month(TextBox1), "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre")

 With Sheets(Onglet)
  LigneFin = .Range("A" & .Rows.Count).End(xlUp).Row + 1
  TextBox1 = Format(Now, "dd/mm")
  TextBox2 = Format(Now, "hh:nn")
   
   If ComboBox1.ListIndex <> -1 Then
    'Date
    .Range("A" & LigneFin) = TextBox1
    'HEURE
    .Range("B" & LigneFin) = TextBox2
    'SOCIETE
    .Range("C" & LigneFin) = TextBox3
     TextBox3 = ""
    'NOM
    .Range("D" & LigneFin) = TextBox4
     TextBox4 = ""
    'TELEPHONE
    .Range("E" & LigneFin) = TextBox5
      TextBox5 = ""
    'Email
    .Range("F" & LigneFin) = TextBox6
     TextBox6 = ""
    'RAISON DE L'APPEL
    .Range("G" & LigneFin) = TextBox7
     TextBox7 = ""
    'TRANSFERT
     .Range("H" & LigneFin) = ComboBox1
     ComboBox1.ListIndex = -1
     ThisWorkbook.Save
   End If
 End With
    
End Sub

Private Sub CommandButton2_Click()
Dim Onglet As String
Dim LigneFin As Long
'Sauvegarde info dans le bon onglet
'Trouve le nom du mois en fonction du numéro de mois de la date du jour
 Onglet = Choose(Month(TextBox1), "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre")

 With Sheets(Onglet)
  LigneFin = .Range("A" & .Rows.Count).End(xlUp).Row + 1
  'Date
   .Range("A" & LigneFin) = TextBox1
  'HEURE
   .Range("B" & LigneFin) = TextBox2
  'SOCIETE
   .Range("C" & LigneFin) = TextBox3
  'NOM
   .Range("D" & LigneFin) = TextBox4
  'TELEPHONE
   .Range("E" & LigneFin) = TextBox5
  'Email
   .Range("F" & LigneFin) = TextBox6
  'RAISON DE L'APPEL
   .Range("G" & LigneFin) = TextBox7
  'TRANSFERT
   .Range("H" & LigneFin) = ComboBox1
 End With
 ThisWorkbook.Save
Application.Quit
End Sub

Private Sub UserForm_Initialize()
TextBox1 = Format(Now, "dd/mm")
TextBox2 = Format(Now, "hh:nn")
'Pour passer à la ligne Shift entrée
TextBox7.MultiLine = True
ComboBox1.List = Sheets("VBA").Range("A1:A" & Sheets("VBA").Range("A" & Rows.Count).End(xlUp).Row).Value
End Sub
 

sophie34

XLDnaute Junior
Re : Cahier d'appel

Merci Camarchepas !

Je n'aurai jamais pensé à tourner mes codes autour des 2 commandbutton !
J'avais commencé à faire un code pour tous mes outils.

De même pour renseigner l'onglet automatiquement en fonction de la date, c'est ingénieux !!!
J'ai bien relu les codes et effectivement il n'y a que du bon sens.

Maintenant je vais pouvoir le mettre en forme.

Une très bonne journée à vous tous, j'espère que d'autres pourront s'inspirer de ton code !
A bientôt



PS: Est-ce qu'il existe un bouquin qui reprend pas à pas les base des VBA, car j'ai acheté il y a 2 ans
- VBA pour Excel 2010 de Micro Application
et
- Excel 2010 Programmation VBA de Daniel - Jean David - EYROLLES

Et à mon sens ils sont plus pour des initiés ... avez vous une recommandation ?
 

camarchepas

XLDnaute Barbatruc
Re : Cahier d'appel

Sophie,

Je pense que les bouquins que j'ai utilisés sont en rupture de stock à présent ......

J'en ai quelques kilos, sinon voir sur ce site "Supports de formation" , (Je ne touche pas de commissions , sur les ventes , lol, cela permet sans doute de régler les factures liées au site entre autre )

Bon , j'ai pratiqué pleins de languages avant d'arriver au VBA , et nombres ont des points communs avec celui ci .

Les variables entre autres , les itérations , les tests

y'a aussi le moteur de recherche du site ou du navigateur .

voilà , le code pourrait encore être optimisés , mais peut être plus difficile à comprendre et adapter .
 

sophie34

XLDnaute Junior
Re : Cahier d'appel

Merci de ta réponse.

Le plus facile pour moi est de trouver un fichier qui ressemble fortement au mien et d'adapter le code.
Souvent je prends des chemins bien compliqués et ça fait des boucles.

J'ai une dernière question à voir.


Je viens de rajouter une combobox avec transfert email en colonne "I"
Dans mon tableau en fonction du nom qui apparait en colonne "I" j'ai une adresse email qui s'ajoute par la fonction RECHERCHEV dans la colonne "J"

Sauf que du coup, il je clique dessus et bien mon lien hypertexte n'est plus actif !!!:mad:

Je voudrais pourvoir envoyer par email la ligne correspondante.

Ci-joint le fichier modifié.
Merci de votre aide.
 

Pièces jointes

  • Appel email (1).xlsm
    38.2 KB · Affichages: 70
  • Appel email (1).xlsm
    38.2 KB · Affichages: 63
  • Appel email (1).xlsm
    38.2 KB · Affichages: 64

camarchepas

XLDnaute Barbatruc
Re : Cahier d'appel

Re ,

Voici comment je ferai , et tant qu'à faire sans formules , cela évite de les tirer .....
 

Pièces jointes

  • Appel email (1).xlsm
    37.6 KB · Affichages: 68
  • Appel email (1).xlsm
    37.6 KB · Affichages: 65
  • Appel email (1).xlsm
    37.6 KB · Affichages: 77

sophie34

XLDnaute Junior
Re : Cahier d'appel

Modification de mon message.

J'ai trouvé mon PB, il fallait que je remonte une ligne de commande.
Par contre, je ne sais pas toi, mais moi je n'ai que mailto dans la colonne J qui apparaît et non les adresses définies.
Je retourne investiguer...
 
Dernière édition:

sophie34

XLDnaute Junior
Re : Cahier d'appel

Bonjour !

En effet , les adresses emails fonctionnent très bien.
Mais j'ai toujours une erreur quand je veux fermer l'userform (commandbutton2) il me donne l'erreur 91:

"variable objet ou variable de bloc with non définie"
Code:
Cellule = Sheets("VBA").Range("A:A").Find(ComboBox2, lookat:=xlWhole).Offset(0, 1)

Est-ce qu'il ne faut pas rajouter un Dim Oject ?
 

sophie34

XLDnaute Junior
Re : Cahier d'appel

Non non je t'en pris !

Bon alors voilà mes remarques:

Si je rajoute le Dim cellule as Range, cela me met l'erreur 91 pour le commandbutto 1 et 2.
Si je supprime cette information mes plus d'erreur, par contre je pers la tabulation pour changer d'une textbox à l'autre ???
Et maintenant quand je referme l'application, cela m'enregistre une ligne vierge !!!

Je te revoie mon fichier.

Sinon j'ai voulu ajouter un format pour forcer le numéro de téléphone à afficher "xx" "xx" "xx" "xx" "xx" mais sans succès
 

sophie34

XLDnaute Junior
Re : Cahier d'appel

Mise à jour.
Mon déplacement par tabulation est bon.
JE n'ai plus d'erreur 91 pour les deux commandbutton.
J'ai la solution pour la ligne blanche quand je ferme.

As tu juste le code pour le format du téléphone ? J'en ai essayé 2 ça n'a pas fonctionné.
 
Dernière édition:

sophie34

XLDnaute Junior
Re : Cahier d'appel

J'ai déjà essayé ce code, et je n'ai rien vu de nouveau.

Par contre, je viens d'identifié mon fichier en fichier partagé que j'ai ensuite enregistré sur le réseau.
Donc c'est bon tout le monde pour l'ouvrir et le compléter. Mais au moment d'enregistrer, il m'indique l'erreur suivante:

1004: Erreur définie par l'application ou par l'objet...

Une idée ?
 

Discussions similaires

Réponses
6
Affichages
336
Réponses
12
Affichages
353

Statistiques des forums

Discussions
312 361
Messages
2 087 618
Membres
103 608
dernier inscrit
rawane