Debuts dans VBA

Bonjour à tous,

Je chercher désespérément à comprendre le langage VBA mais pas facile quand on est seule .... Alors je sollicite votre aide!!

J'aimerai créer un bouton "ENREGISTRER FICHE" dans mon fichier "FICHE APPEL" afin de transférer les données inscrites vers la feuille "LISTE APPELS" pour les archiver dans ce tableau. A chaque fiche enregistrer, j'aimerai que la prochaine s'enregistre dans la ligne suivante du tableau et n'efface donc pas la première. J'aimerai (pour finir ) pouvoir creer un tableau "LISTE APPELS" pour chaque nouveau jour.

J’espère être claire dans mes explications....

Merci beaucoup d'avance !!

Maeva

Bonjour Maeva, bonjour le forum,

Tu demande de créer un nouvel onglet par jour mais ton fichier est protégé par mot de passe !?... Impossible d'ajouter un onglet.

Je n'attends plus que ce mot de passe...

Oupsssss.....

mdp : maeva ou MAEVA

Slt,

un début

Bonjour et sur le forum,

Tu es claire, pas de souci là dessus, par contre, je ne suis pas fan du fait de créer un nouveau tableau chaque jour, et je ne comprends pas trop à quoi sert la cellule date est-ce que c'est possible que quelqu'un fasse une saisie pour un jour passé? et non pour le jour en cours?

Pour le fait de créer un nouveau tableau chaque jour, si tu veux consulter uniquement les appels le 1/8/2019, il suffit de faire un filtre chronologique sur la colonne date et le tour sera joué

Voici le fichier avec le bouton en plus:

Je demande un tableau par jour car cette fiche appel va me servir de cahier d'appels et pour éviter une surcharge du tableau au bout de quelques mois (voir semaines) (tout en sachant que j'ai une vingtaine d'appel par jour), je me suis dis que le tableau récapitulatif allait vite être brouillon.

Est ce que l'un de vous est en mesure de me donner un "cours" de programmation ? ca m’intéresse énormément mais pas toujours facile de poser les questions a google ...

Re,

20 appel par jour, ça ferait 100 appel par semaines environs, si tu travailles toute l'année sans vacances, on arrive à 52 semaines soit 5200 lignes, c'est rien pour Excel qui a 2^20, soit plus d'un million de lignes en réserve au bout de 20 ans tu devras peut-être en faire un autre à la limite, enfin d'ici là, j'espère que tu auras archivé certaines informations

le tableau récapitulatif (qui peut-être fait avec un tableau croisé dynamique), ne sera pas brouillon si tu appliques un filtre sur la date

Pour des cours de VBA, ce site en propose par exemple:

https://www.excel-pratique.com/fr/vba.php

Tu auras aussi un cours Excel:

https://www.excel-pratique.com/fr/cours.php

Je ne saurais pas te dire ce qu'ils valent par contre comme j'ai appris sur le tas en aidant des personnes sur le forum

Est ce que l'un de vous est en mesure de me donner un "cours" de programmation ? ca m’intéresse énormément mais pas toujours facile de poser les questions a google ...

perso j'ai commencé avec le cours VBA du Forum, il est trés bien écrit!

https://www.excel-pratique.com/fr/vba.php

Sinon il faut crier Ausecouuuuuur

En tous cas merci merci merci pour votre aide !!! Meme si je ne comprends pas encore comment vous avez fait, je vais m'y pencher et je vais y arriver à mon tour !!

ça marche!

Si tu as des questions sur les lignes de code, n'hésite pas

Re,

Meva la protection de la structure me complique trop la tâche pour le code. Je n'y arrive pas. Je te propose donc de la supprimer.

J'ai mis en page l'onglet FICHE APPEL avec des cellulesfusionnées et formatée et avec une protection (sans mot de passe) pour te permettre de remplir cette fiche plus vite.

les codes :

Sub effacer_donnees()
Dim OS As Worksheet 'déclare la variable OS (onglet Source)

Set OS = Worksheets("FICHE APPEL") 'définit l'onglet source OS
OS.Activate 'active l'onglet OS
OS.Unprotect 'déprotège l'onglet OS
Range("C7,G7,C9,C11:G11,C13:G13,C17,C19:G26").ClearContents 'efface le contenu des cellules
Range("C7").Select 'sélectionne la cellule C7
OS.Protect 'protège l'onglet
End Sub

Sub stocker()
Dim OS As Worksheet 'déclare la variable OS (onglet Source)
Dim OM As Worksheet 'déclare la variable OM (Onglet Modèle)
Dim OD As Worksheet 'déclare la variable OS (onglet Destination)
Dim LR As Integer 'déclare la variable LR (Ligne de Référence)
Dim DL As Long 'déclare la variable DL (Date Long)

Set OS = Worksheets("FICHE APPEL") 'définit l'onglet source OS
Set OM = Worksheets("LISTE APPELS") 'définit l'onglet modèle OM
DL = CLng(DateSerial(Year(OS.Range("G7")), Month(OS.Range("G7")), Day(OS.Range("G7"))))
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set OD = Worksheets("LISTE APPELS_" & Format(CDate(DL), "dd_mm_yyyy")) 'définit l'onglet destination OD (génere une erreur si ce onglet n'existe pas)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    OM.Copy after:=Sheets(Sheets.Count) 'copy l'onglet modèle en dernière position
    Set OD = ActiveSheet 'définit l'onglet destination OD
    OD.Name = "LISTE APPELS_" & Format(CDate(DL), "dd_mm_yyyy") 'renom el'onglet OD
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
LR = OD.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la ligne de référence LR
OD.Cells(LR, "A").Value = OS.Range("C7").Value 'récupère l'Agent
OD.Cells(LR, "B").Value = OS.Range("G7").Value 'récupère la date
OD.Cells(LR, "C").Value = OS.Range("C9").Value 'récupère le numéro d'appel
OD.Cells(LR, "D").Value = OS.Range("C11:G11").Value 'récupère le nom/prénom
OD.Cells(LR, "E").Value = OS.Range("C13:G13").Value 'récupère les coordonnées
OD.Cells(LR, "F").Value = OS.Range("C17").Value 'récupère les coordonnées
OD.Cells(LR, "G").Value = OS.Range("C19:G26").Value 'récupère le descriptif
Call effacer_donnees 'lance la procédure effacer_donnees
End Sub

Comme tu peux t'en rendre compte, je lance la macro Effacer_donnees à la fin de stocker... Tu adapteras...

Le fichier :

9maevap-ep-v01.xlsm (38.92 Ko)
Rechercher des sujets similaires à "debuts vba"