VBA Saisie de données

Bonjour tout le monde !

Je me joins à vous ce soir car un peu novice en VBA. En raison de mon activité, je cherche a créer un fichier qui me permettrait de faire de la saisie de commandes rapide. Avec un onglet récap qui me permettrait d'exploiter à la fois les mails de mes clients pour les avertir de la bonne reception de la commande et aussi d'avoir une base de donnée concernant le détail de celles-ci.

Je pense que le fichier est bien avancé mais j'aurais besoin d'un coup de pouce pour finaliser les VBA !

Bouton : NouvelleSaisie

Ce bouton permet d'effacer les valeurs du tableau de saisie (B4; C4; D4; E4; F4:F14; G4:14; H4;H14; J4:J14;)afin de pouvoir en faire une autre.

EnregistrerGeneral :

Ce bouton permet l'enregistrement de tout le tableau de Saisie(A3:R16) dans l'onglet général en partant de la dernière ligne utilisé. En format valeur.

EnregistrerRecap :

Ce bouton permet d'enregistrer le Recap(A15:R16) dans l'onglet Recap en partant de la dernière ligne utilisé.

En format valeur.

Sub NouvelleSaisie()

'

' NouvelleSaisie Macro

' Ce bouton permet d'effacer les valeurs du tableau de saisie (B4; C4; D4; E4; F4:F14; G4:14; H4;H14; J4:J14;)afin de pouvoir en faire une autre.

'

'

Range("B4,C4,D4,E4,F4:F6,G4:G6,H4:H6,J4:J6").Select

Range("J4").Activate

Selection.ClearContents

Range("B4").Select

End Sub

Sub EnregistrerGeneral()

'

' EnregistrerGeneral Macro

' Ce bouton permet l'enregistrement de tout le tableau de Saisie(A3:R16) dans l'onglet général en partant de la dernière ligne utilisé.

'

'

Range("A3:R16").Select

Selection.Copy

Sheets("General").Select

Range("A1").Select

ActiveSheet.Paste

Application.CutCopyMode = False

Range("B2").Select

End Sub

Sub EnregistrerRecap()

'

' EnregistrerRecap Macro

' EnregistrerRecap : "&chr(13)&" Ce bouton permet d'enregistrer le Recap(A15:R16) dans l'onglet Recap en partant de la dernière ligne utilisé"&chr(13)&"

'

'

Range("B16:R16").Select

Selection.Copy

Sheets("Recap").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Range("A1").Select

End Sub

Je n'ai pas encore les moyens d'investir dans un site e-commerce qui prendrais en charge ces saisies, mais pour le moment je mise là-dessus

Merci d'avance pour vos réponses !

29macrosuivi.xlsx (24.92 Ko)

Bonjour

Voici déjà pour le code Nouvelle Saisie

Sub NouvelleSaisie()

Worksheets("Saisie").Range("B4:J6").ClearContents

End Sub

Mais avant de continuer, une question à la vue du tableau :

- Etes-vous sur que vous ne devez effacer que jusque la ligne 6 et, si non, que la ligne 14 est la dernière ligne possible de votre tableau. Exemple : avoir votre tableau jusque ligne 20

Concernant la feuille General, quelle est l'idée poursuivie de copier tout dans cette feuille ?

Cordialement

Bonjour Dan !

Avant tout merci pour votre intéressement. En effet le but de "nouvelle saisie" est d'effacer le contenu des cellules de saisies sans pour autant supprimer les formules des autres cellules. Dans le cas de votre VBA, elle supprime les formules en I4, I5, I6

De plus il est possible qu'une personne face plus de 10 réservation il est donc vrai que la zone de remplissage possible serait celle-ci

Zone de remplissage possible:

capture d ecran 2019 12 06 a 14 47 03

Pour répondre à votre question, l'idée de créer un onglet "Général" est de créer une sorte de base de donnée à moyen terme afin d'avoir un regard sur le détail des réservations si besoin, son objectif est donc de compiler les tableaux de saisie comme un classeur. Celui de l'onglet Récap a pour objectifs d'un côté de récolter les mail pour faciliter l'envoie des mails de confirmation et d'avoir une donné un peu plus synthétisé sur une seul ligne.

Mon objectif et aussi de créer un fichier très ergonomique car il ne sera pas utilisé que par moi

Je vous remercie de nouveau, bonne journée!

Max

Re

Dans le cas de votre VBA, elle supprime les formules en I4, I5, I6

Ok désolé je n'avais pas fait attention qu'il y avait une formule dans la colonne I. Le code corrigé :

Sub NouvelleSaisie()
' NouvelleSaisie Macro
Worksheets("Saisie").Range("B4:H14, J4:j14").ClearContents
End Sub

Zone de remplissage possible:

Ok. Le code considère qu'il n'y aura pas de réservation au delà de la ligne 14.

l'idée de créer un onglet "Général" est de créer une sorte de base de donnée à moyen terme afin d'avoir un regard sur le détail des réservations si besoin, son objectif est donc de compiler les tableaux de saisie comme un classeur.

Donc à chaque nouvelle saisie vous allez ajouter le nouveau tableau en dessous du précédent ?

J'aurais plutôt fait une base de données et mettant toutes les lignes entre 4 et 14 dans votre feuille générale; un peu à l'image de votre votre feuille Recap mais sans y mettre le total, qui lui, est mis dans la feuille RECAP

Autre chose que vous pourriez envisager, c'est de modifier votre feuille "Saisie" en consacrant votre ligne 1 aux informations reprises en A4 jusque E4. Cela vous éviterait d'avoir des cellules vides dans les colonnes A à E puisque vous ne compléterez toujours que A4 à E4 pour ce qui concerne le nom, prenom ect...

Celui de l'onglet Récap a pour objectifs d'un côté de récolter les mail pour faciliter l'envoie des mails de confirmation et d'avoir une donné un peu plus synthétisé sur une seul ligne

.

Ok là je vois ce que vous voulez obtenir.

Je m'étais juste demandé si vous n'auriez pas plutot intérêt à supprimer l'onglet General au profit du récap.

Cordialement

Bonjour Dan,

J'ai pu affecter le code pour nouvelle saisie au bouton nouvelle saisie et il marche très bien ! Je vous en remercie.

Oui, c'est aussi une option pour ce qui est de l'onglet "Général", il est aussi possible de copier les cellules B4 à R14 sans prendre en compte le récap qui lui est déjà copié dans récap !

Je me dis aussi qu'il serait possible de copier coller toutes les cellules entre B4 et R14 sous conditions qu'elles soient pleines ! Ça permettais d'éviter les espaces blancs dans l'onglet récap et donc de ne référencer que les lignes contenant une réservation.

Mais est-il possible de dissocier une cellule avec une formule d'une cellule avec un résultat ?

Pour se qui est de l'onglet Récap pas de problème alors, sauf le code ^^

Pour ce qui est de la feuille de Saisie que je pourrais modifié, je me suis posé la question aussi. Mais je me suis dit qu'il valait mieux la laissée comme ça, car il pourrait arriver que des informations complémentaires soient à ajouter du type, un autre nom sous la réservation voir plusieurs !

Ce que le code de "NouvelleSaisie" comprend très bien !

PS: Je dépose avec ça la dernière version du fichier Excel, étant relativement novice je ne l'avais pas enregistré au bon format, se qui a eu pour effet de ne pas enregistrer mes précédentes Macro, je pense que en .xlsm ça doit fonctionner. Pensez vous que je pourrais ouvrir ce doc .xlsm sur Google sheet ?

Max

8macrosuivivf.xlsm (32.74 Ko)

Encore merci pour votre temps et excellente journée à vous !

Max

Bonjour

Votre fichier en retour pour test

Je me dis aussi qu'il serait possible de copier coller toutes les cellules entre B4 et R14 sous conditions qu'elles soient pleines !

Macro Enregistregeneral

La macro permet d'enregistrer chaque ligne complète dans la feuille General et ce, entre les lignes 4 et 14. Une fois enregistrée, le code pourrait effacer les données de la ligne copiée. La ligne de code pour ce faire existe mais est désactivée.

Dans le cas où une donnée manque dans une des lignes, le code ne copie rien dans la feuille general. Par contre il vous renvoie un message en signalant qu'il y des lignes pour lesquelles une donnée est manquante.

EnregistrerRecap

La macro enregistre la ligne 16 dans la feuille Recap

Mais est-il possible de dissocier une cellule avec une formule d'une cellule avec un résultat ?

Je n'ai pas compris votre question

Autre chose, je vois que vous êtes sous MAC. Mon conseil est d'éviter les cellules fusionnées surtout si vous utilisez ces cellules dans le code. La fusion est aussi à éviter sous excel windows. In fine, il y a toujours un souci à un moment ou un autre. A voir, mais de mon coté j'évite toujours si une autre solution est possible.

Au fait pourquoi ne pas mettre vos boutons au dessus du tableau ?...

Cordialement

11macrosuivivf-2.xlsm (36.68 Ko)

Bonjour Dan !

J'ai essayé ce matin d'ouvrir le fichier Excel que vous m'avez renvoyer, mais mon ordinateur semble avoir du mal à le traiter !

A l'ouverture je reçois les messages suivants:

capture d ecran 2019 12 09 a 09 26 30 capture d ecran 2019 12 09 a 09 26 53

De plus, on dirait que les VBA ne se sont pas sauvegardés, il n'y en à qu'une seul sur tout le fichier

capture d ecran 2019 12 09 a 09 34 10 capture d ecran 2019 12 09 a 09 28 54

Avez vous une idée de se qui peut ne pas aller ?

Max

Voilà la dernière version que vous avez pu m'envoyer

Très bonne journée à vous.

Re

Dans votre fichier :

  • vous aviez placé la macro Saisie dans la feuille 1. elle doit être dans le module 1 comme je vous l'ai mise dans mon fichier. Là je le vois de nouveau à cet endroit
  • Les liaisons, votre fichier comportait une liaison que je n'ai pas supprimée. Elle vient d'un fichier MACROSUIVI que je ne connais pas

Question : est-ce que vous utilisez le fichier que je vous donne ou bien vous recopiez dans un autre ??

Votre fichier en retour

Cordialement

C'est génial !! Tout fonctionne à merveille à part le bouton pour enregistrer la saisie général qui m'affiche un petit message d'erreur et ne copie que la première ligne (4) du tableau.

capture d ecran 2019 12 09 a 15 51 51

J'ai pu en effet me rendre compte a postériori l'enregistrement du tableau de saisie se faisait mal si des cellules étaient vides dans celui-ci.

A part ça, les deux autres boutons fonctionnent très bien.

Pour ce qui est de votre question, j'utilise celui que vous me donnez, mais je fais très sûrement de mauvaises manipulation.. (je pense que c'est en farfouillant que j'ai du faire ça)

Je garderais toujours une copie du document final de côté au cas ou je viendrais à faire d'autres bêtises

Je vous dépose le dernier fichier que vous m'avez laisse avec un exemple de Saisie complète pour que vous puissiez voir le problème dans l'onglet général.

25macrosuivi-vf3.xlsm (33.95 Ko)

Merci encore pour votre temps ! Je vous souhaite une très bonne journée.

Max

re

J'ai pu en effet me rendre compte a postériori l'enregistrement du tableau de saisie se faisait mal si des cellules étaient vides dans celui-ci.

Non il ne se fait pas mal. Comme expliqué dans mon post précédent, si vous ne mettez pas de données en A et D, la ligne n'est pas enregistrée.

Cela vous impose de mettre des données même si elles sont identiques.

Raison pour laquelle je vous disais de mettre une référence nom, prenom, etc... en entête du tableau (ligne 1 ou 2 par exemple) plutot que entre A et D. Là vous disiez que l'on pourrait avoir des noms différents.

A noter que l'on pourrait aussi éviter l'enregistrement si on constate une cellule vide.

Cordialement

En effet oui !!

Je pense que avec tout ça je vais pouvoir faire les dernières retouches et le finaliser.

Encore merci pour votre grande aide.

Très bonne soirée à vous,

Max

Rechercher des sujets similaires à "vba saisie donnees"