Saisie de données et envoi vers base de données

Bonjour le forum, bonjour tout le monde

J'aimerai avoir un avis et un peu d'aide sur un fichier que je suis en train de créer.

Ce fichier est constitué d'un onglet saisie et d'un onglet base de données.

L'onglet Saisie doit permettre :

  • de créer une nouvelle ligne complétée dans la base de données
  • de visualiser les données de la base de données
  • de modifier les données d'une ligne déja créee de la base de données

Via des INDEX/EQUIV, je peux visualiser les données,

Via une macro toute simple de copier coller les valeurs je peux modifier les données

J'en suis au stade où je veux envoyer les données vers la base de données.

Il y a deux possibilités :

  • il s'agit d'une création de ligne > donc il faut copier coller la ligne 39 de l'onglet saisie dans la dernière ligne vide de la base de données
  • il s'agit d'une modification de données, donc d'une modification de ligne déja existante > donc il faut copier coller la ligne 39 sur la ligne de la base de donnée dont le nom correspond au nom en A3 dans l'onglet Saisie

J'aurai besoin d'un peu un peu d'aide pour cette dernière étape au niveau de la macro à créer. (voir fichier joint)

Merci d'avance,

Vincent

73question-bd2.xlsm (27.27 Ko)

Bonjour

Un essai

Merci c'est exactement ce qu'il me faalait, et c'est facile à modifier, ça m'a bien aidé !

Bonne journée,

Vincent

Re bonjour,

en utilisant le fichier , je vois que je ne peux pas créer de nouvelles entrées.

Lorsuqe je crée une nouvelle entrée dans SAISIE, une ligne déja existante est modifiée dans la base de donnée (exemple en mettant victor hugo), donc si je veux ajouter une nouvelle ligne dans la base de donnée ça ne marche pas, et je ne vois pas dans le code où ça ne vas pas... (cf fichier joint)

Merci pour toute aide

Vincent

Bonjour

Une erreur de parallaxe ( je n'avais pas les trous en face des yeux)

Modifies la partie de la ligne surlignée

Il serait peut-être intéressant de tester si le nom est bien présent dans la saisie, car on se base sur la colonne du nom (justement la colonne "E") pour trouver la 1ère ligne vide

Option Explicit

Sub Enregistrer()
Dim Ligne As Long, Cel As Range

  If Trim(Range("E41")) = "" Then
    MsgBox "Le nom est obligatoire"
    Exit Sub
  End If

  If MsgBox("Voulez vous enregistrer ces données ?", vbYesNo) <> vbYes Then Exit Sub

  With Sheets("Base de données")
    Set Cel = .Columns("A").Find(what:=Range("A41"), LookIn:=xlValues, lookat:=xlWhole)
    If Not Cel Is Nothing Then
      If MsgBox("Un enregistrement à ce nom existe déja" & vbCr & vbCr & _
                "Voulez-vous le modifier", vbQuestion + vbYesNo + vbDefaultButton2, _
                "Modification") <> vbYes Then Exit Sub
      Ligne = Cel.Row
    Else
      Ligne = .Range("E" & Rows.Count).End(xlUp).Row + 1
    End If
    Application.ScreenUpdating = False
    Range("B41:M41").Copy
    .Range("B" & Ligne).PasteSpecial Paste:=xlPasteValues
    .Range("A" & Ligne).FormulaR1C1 = "=RC[4]&RC[5]"
  End With
  Application.CutCopyMode = False
End Sub

Bonjour,

Ca marche parfaitement, et en effet, si sur la dernière ligne de la base de données il n'y pas de nom (ce qui ne sera pas possible vu la condition que tu as ajouté, et vu que la base de donnée sera masquée) la ligne est copiée sur la ligne sans nom.

Si je souhaite changer le nom ou prénom d'une personne cela crée une nouvelle ligne dans la BD, et il faut donc supprimer l'ancienne ligne.

A part ce dernier point c'est parfait !

Merci beaucoup pour cette aide,

Vincent

Bonjour Banzai, bonjour le forum,

Comment dois je modifier le code si ma base de données se trouve dans un deuxième fichier excel (fichier caché) dans un dossier avec un chemin précis ?

Bien à vous,

vincent

Bonsoir

vincentt a écrit :

Comment dois je modifier le code si ma base de données se trouve dans un deuxième fichier excel (fichier caché) dans un dossier avec un chemin précis ?

Je ne vois pas l'utilité, c'est se compliqué la programmation

A la place de

With Sheets("Base de données")

Pas testé

 Sub Enregistrer()
 '.
  '.
  '.
  With Workbooks.Open(Chemin & fichier)
    With .Sheets("Base de données")
    '.
     '.
     '.
    End With
    .Save
    .Close
  End With
  Application.CutCopyMode = False
End Sub
Rechercher des sujets similaires à "saisie donnees envoi base"