Supprimer un enregistrement en base de données

Résolu
gaignola Messages postés 3 Statut Membre -  
PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai une "base de données" Excel que j'alimente par formulaire. A chaque mise à jour, je génère par macros deux tableaux à partir de la "base" qui appliquent un certain nombre de calculs (merci aux participants de ce forum pour les précieuses macros de copie de cellules entre feuilles). Tout va bien tant que je ne supprime pas d'enregistrements dans la "base" car, alors, ma sélection inclut autant de lignes vides que d'enregistrements supprimés. Comment supprimer des enregistrements en "retaillant" le tableau ?
Merci de votre aide

4 réponses

  1. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Bonjour

    Si votre base de données est défini par un nom de champ exemple Base_xxx
    et que la macro sélectionne cette base en utilisant le nom Base_xxx
    Pour que la base suive le champ, il ne faut pas effacer les données dans les lignes mais supprimer les lignes. Sans toutes fois toucher la première et la dernière ligne de cette base_xxx ce qui vous ferai perdre le champ de la base qui deviendrait #réf
    0
  2. gaignola Messages postés 3 Statut Membre
     
    Bonjour,
    En fait, je n'utilise que la fonction "formulaire" pour alimenter le tableau. Il n'est pas nommé. De même, pour supprimer, j'utilise le formulaire. La macro de mise à jour se positionne en A1 et affiche le formulaire. En sortie de formulaire, elle sélectionne les cellules et les copie dans les cellules de tableaux dans 2 autres onglets qui font les calculs.
    Mon pb est que, quand je sélectionne les cellules jusqu'à la "dernière", celle-ci correspond à une ligne vide qui était occupée par l'enregistrement supprimé...
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Il faut que quand tu lances ta macro, elle t'indique la dernière ligne utilisée

    une méthode (il y en a d'autres), ta base va de la colonne A à G par ex
    derlig=columns("A").find("*",,,,,xlprevious).row

    et tu détermines ta nouvelle base:
    range("A2:G" & derlig)

    Michel
    0
  4. gaignola Messages postés 3 Statut Membre
     
    Bonjour,
    Merci pour cette méthode que je vais mettre de côté pour une prochaine fois.
    Finalement je m'en suis sorti avec un compteur :
    Dim count As Long
    count = Application.WorksheetFunction.CountA(Range("a:a"))
    With Worksheets("Base").Range("A2:K" & count)
    .....
    Cela me permet de détecter la dernière ligne dont la première cellule est non-vide. Après, je concatène "count" chaque fois que j'ai besoin d'aller à la fin.
    Si ça peut servir...
    Encore merci et à bientôt
    0
    1. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
       
      Un petit bout de macro qui vous place sur la cellule en dessous de la dernière cellule pleine il faut respecter que toutes les cellules de la colonne ne contiennent aucun vide en principe c'est le cas dans une base de données puisque c'est la colonne clé

      Sheets("votre_feuille").Select
      Application.Goto Reference:="ancre_code" 'cellule nommée au-dessus de la 1°colonne
      Selection.End(xlDown).Select
      ActiveCell.Offset(1, 0).Activate
      'et après coller les informations copier
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      0