Insertion des données dans un feuille Excel

Bonjour à tous,

J’espère que vous allez bien,

Je suis entrain de mettre en place un petit formulaire pour la gestion des actes de naissance j’ai besoin de votre aide s’il vous plait (voir fichier ci-joint : il y a du code vba déjà)

J’ai une feuille nommée « ACTE» et j’aimerai que lorsque je clique sur le bouton « Lancer formulaire » qui se trouve dans la feuille « Feuil1», en remplissant le formulaire et en cliquant sur le bouton « Valider», les données saisies doivent être déversées automatiquement dans la feuille « ACTE» et ces données doivent également être mises les unes à la suite des autres.

NB : j’aimerai que l’insertion fonctionne avec la feuille « ACTE» masquée ou affichée.

Je n'arrive pas à trouver la solution pourtant ça l’air tout bête.
Pourriez-vous me donner une piste s’il vous plait ?
Dans l’attente,

20insertion-01.xlsm (31.83 Ko)

Bonsoir,

Je ne vois pas en quoi le fait que la feuille "ACTE" soit masquée, l'enregistrement ne peut pas se faire
Attention au tableau de la feuille "ACTE", il contient des lignes vides qui sont prises en compte quand tu recherche la valeur de L, dernière ligne de ce tableau, de ce fait les nouveaux enregistrements s'inscrivent en fin de tableau donc ici en ligne 21
A+

bonjour Jacky, Past007,

La destination est maintenant le tableau structuré dans une feuille cachée ou normalle.

On prend le numéro suivant pour le numéro et on utilise des vraies date au lieu de des dates en "texte".

Et comme Jacky le dit, les lignes vides dans un TS sont à éviter.

12insertion-01.xlsm (32.36 Ko)

Bonsoir Jacky, Bonsoir BsAlv,

Merci pour vos retours rapides.

Sauf erreur de ma part, l'enregistrement ne se fait pas dans la feuille "ACTE", mais dans "Feuil1" et BsAlv vient de résoudre le problème et permettant que l'enregistrement se fasse dans "ACTE".

BsAlv merci encore. Ton codage c'est du haut-niveau, aussi, j'aimerai savoir si vous pouvez faire la même chose dans la feuille "ACTE" mais SANS le TS ?

Merci également de m'expliquer chaque ligne du code ci-dessous :

sp = Split(Replace(Replace(txtJourNaiss, "-", "/"), ".", "/"), "/")
If UBound(sp) <> 2 Then MsgBox "date Naissance n'est pas comme il faut": Exit Sub
DateNaiss = CLng(DateSerial(sp(2), sp(1), sp(0)))

Dans l'attente de votre retour s'il vous plait.

Cordialement

bonjour,

le résultat d'un textbox est un texte, donc votre date par exemple "08/02/2025". VBA est en anglais et utilise les dates américaines donc "mm/jj/aaaa", donc on inverse les mois et les jours. On peut aussi noter cette date comme "08-02-2025" et comme "08.02.2025".

Replace(Replace(txtJourNaiss, "-", "/"), ".", "/") remplace tous ces formats en "08/02/2025

Split( la formule ici dessus , "/") coupe le texte sur le séparateur "/", donc le résultat est 3 parties "08", "02" et "2025" (sp(0) est "08", sp(1) est "02" et sp(2) est "2025"), Ubound commence à compter à 0, donc 3 éléments = 2 (on peut bizarre, si on ne le sait pas)

Puis on réconstruit la date et on le converte en valeur long avec CLng(DateSerial(sp(2), sp(1), sp(0)))

21insertion-01.xlsm (31.75 Ko)

BsAlv merci encore

Bonjour j'ai télécharger grille loto pour pouvoir imprimer des plaques de 3 cartons mais impossible d'imprimer qui peut m'aider d'avance merci beaucoup

Option Explicit

DefBool Y

Public YStop As Boolean

Public ZI%

Sub PrintCarte(Nb%, NQ%)

Dim i%, k%, iR&, Arr, ArrPC, SAd$

[A1].Activate

'Application.ScreenUpdating = False

ArrPC = "B6:J8 B11:J13 B16:J18 L6:T8 L11:T13 L16:T18"

For i = 0 To NQ - 1

WsImp.Range("NoC") = SpcNum(Nb + i) ' + (i * 6))

For k = 0 To 5

iR = RowOfGrd(6 * ([NoC] - 1) + k + 1)

Arr = WsG.Range(WsG.Cells(iR, 1), WsG.Cells(iR + 2, 9)).Value

SAd = Split(ArrPC)(k)

WsImp.Range(SAd) = Arr

Next

If Not YStop Then PrintAsPdf

DoEvents

Next

End Sub

Function RowOfGrd&(i&) 'Position dans la WsC

i = i - [iNoC]

RowOfGrd = 3 * (i - 1) + 1

End Function

Function SpcNum(i%)

SpcNum = i + [iNoC] 'N/A dans cette version

End Function

Sub PrintAsPdf()

Dim S$ 'xlQualityMinimum / xlQualityStandard+

WsImp.PageSetup.PrintArea = IIf(ZI = 6, "$B$5:$T$18", "$B$5:$T$18") 'J

WsImp.PageSetup.Orientation = IIf(ZI = 6, xlLandscape, xlPortrait)

WsImp.PageSetup.Zoom = IIf(ZI = 6, False, 140)

S = Range("NoC").Text

WsImp.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"D:\LOTOPDF\" & S & ".pdf", Quality:=xlQualityMinimum, _

IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End Sub

Sub ShowUsf() '1 PDF = 100 Ko : 2000 = 200 Mo

usfImp.Show

End Sub

Sub Galopin(i&)

Dim k&

ActiveWindow.ScrollRow = 20

ActiveSheet.Shapes("CGrid").Left = ActiveWindow.Width / 2 - 160

ActiveSheet.Shapes("CGrid").Top = [A40].Top

k = RowOfGrd(i)

ActiveSheet.Shapes("CGrid").DrawingObject.Formula = "Grilles!$a$" & k & ":$I$" & k + 2

End Sub

Bonjour,

Quelques remarques avant de regarder de plus prêt
1) tu aurais pu ouvrir un autre post plutôt que d'utiliiser le post de Past dont le contenu n'a rien à voir avec ta question
2) un fichier même restreint est toujours le bien venu
3) Pour nous communiquer du code tu dois utiliser le bouton </> qui est à ta disposition au dessus
A+

désolé..... je croie que je dérange....Mais merci comme même pour vos remarques .... ce n'est pas que si vous êtes fort en un domaine; que c'est tout le monde qui l'est et enfin c'est parce que par urgence et j'on ai besoin que je l'ai posté un peut par tout....désolé encore cordialement....

Merci pour ta réaction qui en définitive est sympa par rapport à mes remarques
Non tu ne me dérangeais pas mais j'ai simplement voulu t'expliquer que dans notre Forum des consignes sont à respecter afin de rendre notre particpation plus aisée pour vous aider

Je reste donc à ta disposition dans les conditions exprimées précédemment et ferais tout ce que pourrais t'aider dans le cadre de mes posibiltés
Bien cordialement

Bonjour BsAlv,

Bonsoir à tous et j'espère que vous allez bien

BsAlv ton fichier est OK et je t'en remercie.

Cependant, le contenu de "txtNbreCopie" et "txtPrix" s'enregistre sous forme de "texte" dans le fichier "Acte" (voir colonne H et I dans la feuille "Acte").

Question :

1. Comment convertir ce contenu du TEXTE en NOMBRE comme cela a été fait pour les DATE ?

2.En réalité, j'aimerai que le contenu de "txtNbreCopie" et "txtPrix" soit sur la colonne I et J, et non sur les colonnes H et I. Comment décaler ça ?

Toutes mes efforts ont été vains.

* Capture du formulaire :

image

Dans l'attente de votre retour s'il vous plait.

Ci-*joint le fichier vba

Cordialement

10insertion-02.xlsm (33.25 Ko)

re,

maintenant le prix et le nombre sont des valeurs au lieu de texte.

Pour les 2 dates, ";" = aujourd'hui et pour "14/2", on ajoute l'année, donc "14/2/2025"

Avec le bouton "Tab", on saute dans la bonne séquence de l'un objet vers l'autre.

14insertion-02.xlsm (35.77 Ko)

Bonjour à tous,

Bonjour BsAlv. Je teste ta solution et te reviens très vite.

Merci encore

BsAlv, pour les Dates et les Nombres c'est OK. Merci encore.

Mais tu n'as pas répondu à la question suivante s'il te plait :

2.En réalité, j'aimerai que le contenu de "txtNbreCopie" et "txtPrix" soit sur la colonne I et J, et non sur les colonnes H et I. Comment décaler ça ?

et je ne comprend pas ta phrase suivante :

Avec le bouton "Tab", on saute dans la bonne séquence de l'un objet vers l'autre.

Dans l'attente de votre retour stp.

Bonjour,

J'ai oublié de vous dire que dans la colonne K de la feuille ACTE ; il y a un une formule qui fait la fait la multiplication des colonnes I et J.

Mais j'ai constaté que lorsque j'ajoute des nouvelles données, la FORMULE ne se répercute plus dans la NOUVELLE LIGNE et cela me dérange énormément.

Encore besoin de votre aide s'il vous plait.

Fichier en pièce jointe

11insertion-03.xlsm (29.88 Ko)

je suppose que la formule était/est toujours correcte, mais que les données étaient dans les mauvaises colonnes.

12insertion-03.xlsm (36.33 Ko)

BsAlv ton code fonctionne super bien et je t'en remercie.

Mais mon but est de comprendre le vba et en décortiquant ton code, je ne vois pas l'endroit qui permet ajouter la ligne suivante tout en conservant "la formule" qui est dans la colonne K.

Si tu peux m'aider à mieux comprendre ton code, ça m'éviter tous ses aller-retour.

Merci

With Sheets("Acte").Range("BaseRH").ListObject     'le tableau structuré
               Nr = Application.Max(.ListColumns("Numero").DataBodyRange) + 1     'numero suivant
               With .ListRows.Add.Range      'ajouter une nouvelle ligne avec les formules, formats, MFCs, etc existants
                    .Resize(, 7).Value = Array(Nr, MaDate, txtN°Acte, txtNom, DateNaiss, cboVille, cboAbreviation)     'les 7 premières colonnes
                    .Cells(1, 8).Value = txtImportation.Value     '8eme colonne, c'est cet "importation ?????
                    .Cells(1, 9).Resize(, 2).Value = Array(Nbr, Prix)     'nom du fichier encore inconnu !!, donc colonnes 9&10
               End With
          End With

With .ListRows.Add.Range = l'ajout d'une nouvelle ligne complète avec formats, formules, MFCs, etc et les 3 lignes suivantes, on écrase les 10 premières cellules de cette ligne avec un bloc de 7 puis de 1 et finalement 2 cellules, on pouvait le faire aussi en 1 fois, mais je n'étais pas sûr ce que vous voulez faire avec la 8eme cellule.

13insertion-03.xlsm (35.71 Ko)

Bonjour BsAlv,

Bonjour à tous et merci encore pour votre aide.

Cordialement

Rechercher des sujets similaires à "insertion donnees feuille"