Aide sur macro [Base de Données]

Bonjour,

Pas expert dans les macros de Excel, je me permet de vous demander conseil.

ma version d'excel est 2010.

Pour comprendre je vous joins mon Fichier.

https://www.cjoint.com/c/EGyiB3EY6aH

Je souhaite en cliquant sur le bouton "Enregistrer" :

1- vérifie si C18:H18 pas "vide".

- si vide message "Manque Données à Enregistrer".

- sinon copie D18:H18 dans B2:G2 de la feuille "BdD", puis l'enregistrement suivant en B3:G3, ainsi de suite Bn:Hn.

2 - incrémente en A2 le N° de données [1, 2 , 3 , .....].

3 - Message "Enregistrement effectué".

4 - efface dans la feuille "Saisie" les cellules D18, C5, C7, C9, C11.

5 - se positionne sur D18.

merci

@+++

Bonjour Malpas, bonjour le forum,

Je t'avoue que je n'ai pas aimé la manière dont on doit renseigner les données. Pourquoi ne pas mettre les listes directement dans la ligne 18 ?!...

Une proposition de code extrêmement long avec ta méthode :

Sub Bouton1_Cliquer()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEl As Range 'déclare la variable CEL (CELlule)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set OS = Sheets("Saisie") 'définit l'onglet source OS
Set OD = Sheets("BdD") 'définit l'onglet destination OD
Set PL = OS.Range("C18:H18") 'définit la palge PL
If OS.Range("D18").Value = "" Then 'si la cellue D18 est vide
    MsgBox "Vous devez renseigner la date!" 'message
    Exit Sub 'sort de la procédure
End If
If OS.Range("E18").Value = "" Then 'si la cellue E18 est vide
    MsgBox "Vous devez renseigner cette cellule !" 'message
    OS.Range("C5").Select 'sélectionne la cellue C5
    Exit Sub 'sort de la procédure
End If
If OS.Range("F18").Value = "" Then 'si la cellue F18 est vide
    MsgBox "vous devez renseigner cette cellule !" 'message
    OS.Range("C7").Select 'sélectionne la cellue C7
    Exit Sub 'sort de la procédure
End If
If OS.Range("G18").Value = "" Then 'si la cellue G18 est vide
    MsgBox "Vous devez renseigner cette cellule !" 'message
    OS.Range("C9").Select 'sélectionne la cellue C9
    Exit Sub 'sort de la procédure
End If
If OS.Range("H18").Value = "" Then 'si la cellue H18 est vide
    MsgBox "Cous devez renseigner cette cellule !" 'message
    OS.Range("C11").Select 'sélectionne la cellue C11
    Exit Sub 'sort de la procédure
End If
'définit la cellule de destination DEST
Set DEST = Sheets("BdD").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
DEST.Value = Application.WorksheetFunction.Max(Sheets("BdD").Columns(1)) + 1 'incrémente le numéro dans DEST
'récupère les valeurs de la plage PL dans DEST déclalée d'une colonne à droite
DEST.Offset(0, 1).Resize(1, 6) = PL.Value
MsgBox "Enregistrement effectué !" 'message
With Sheets("Saisie") 'prend en compte l'onglet "Saisie"
    .Range("D18").ClearContents 'effface le contenu de la cellujles D18
    For I = 5 To 11 Step 2 'boucle de 5 à 11 par pas de 2
        .Range(Cells(I, 3), .Cells(I, 4)).ClearContents 'efface les cellules des colonnes C et D (Argh les cellues fusionnées !)
    Next I 'prochaine valeur de la boucle
    .Range("D18").Select 'sélectionne D18
End With 'fin de la prise en compte de l'onglet "Saisie"
End Sub

Bonjour,

Déja MERCI !

Désolé pour mon approche et ma logique qui ne correspondait pas à une logique trop efficiente.

Toujours est-il que la macro fonctionne parfaitement et correspond à 100% à mes attentes.

En plus j'ai beaucoup aimé l'explication en fin de chaque ligne de code car très formateur !

Je vais continuer mon tableau pour le compéter, mais ensuite j'aurais très certainement besoin de vous pour automatiser un TCD.

D'ailleurs comment dois-je faire ?

  • passer ce post en "résolu" et ouvrir un nouveau avec la problématique TCD ?
  • ou continuer sur ce même post avec les 2 problématiques mais différentes ?

Donc encore MERCI et BRAVO.

@++++

Re,

Oui, je pense qu'il serait préférable que tu ouvres un nouveau fil pour le TCD. D'autant plus que je suis nul dans ce domaine et que tu pourras bénéficier de l'aide des balèzes de ce forum. Sur le sujet je serais plutôt : TDCD...

Bonsoir,

j'aurais besoin d'aide sur la macro car je souhaite ajouter 3 valeurs à coller dans BdD.

Dans les cellules "I18" "J18" et "K18" je vais avoir des données (masquer ensuite) et souhaiterais que ces données se "colle" dans la feuille "BdD" avec le reste des collages de B à H et à chaque enregistrement et bien sur s'incrémente de 1 dans la base.

J'ai essayé en modifiant ta macro comme tu pourras le voir mais seul la 1ère données s'affiche correctement.

Voici le fichier :

https://www.cjoint.com/c/EGAqd2qweAb

MERCI

@+++

Rechercher des sujets similaires à "aide macro base donnees"