Supprimer une ligne en VBA.Amélioration de ma macro

Bonjour,

Je dois ajouter une fonctionnalité à ma fiche de saisie d'événement pour la gestion des appels téléphoniques, au sein de mon boulot.

Contexte :

  • 1 fiche de saisie avec des listes déroulante = création d'un événement
  • 1 bouton de validation qui va incrémenter une base de données, pour archivage

Idée :

- pouvoir récupérer toutes les infos d'un événement depuis la base de données dans la fiche de saisie pour pouvoir modifier l'événement, en cas d'erreur, ou de MAJ de l'événement.

J'ai tout refais en simple sur le fichier joint

3 feuilles : saisie / base / matrices, avec toutes les explications de mes soucis. 2 petites macros sont déjà faites.

Mes problèmes :

  • sur la feuille "base" : comment ne sélectionner qu'une seule ligne. Ma méthode est artisanale, n’est pas souple.
  • comment supprimer de la base la ligne "rechargée"

Merci pour vos idées / solutions / suggestions.

A votre dispo pour en discuter!

EDIT : le fichier buggait. Modifs faites.

66essai-recup.zip (11.25 Ko)

Bonjour,

A la vue de ton fichier :

  • Feuille "Saisie" - > Mettre les listes déroulantes (dites "liste de validation") dans les cellules plutôt que d'utiliser des objets.
  • Code VBA : ils doivent être placés dans un module et non dans la feuille comme tu l'as fait.
  • feuille "Matrices" -> A quoi servent les chiffres à droite et à gauche

A te relire

Dan

Merci pour cette réponse.

- pour les listes, ma méthode d'utiliser un objet des outils formulaire me permet d'une part, grâce à la cellule liée de la liste, de faire varier la sélection avec mon système de recherchev.Est-ce là aussi, une méthode artisanale?? D'autre part, me permet de bien suggérer aux utilisateurs (nombreux, mais à tour de role, donc pas habitués) qu'il y a une liste. Alors que les listes dans la cellule avec les possibilités validations ne suggèrent pas, sans sélectionner la dite cellule, qu'il y en a une.

- Pour le VBA, je suis très mauvais. Quel est l'utilité d'écrire dans un module, au lieu de le faire dans la feuille?

- pour les matrices, là aussi mes chiffres me permettent d'aller chercher le numéros d'ordre, mais c'est probablement du bidouillage aussi.

Sinon, pour mes 2 questions à la fin de mon premier message, une idée?

Encore merci!

re,

Ce n'est pas une méthide artisanale mais en VBA c'est nettement plus simple de travailler sur la cellule que sur un objet liste déroulante.

En gros je te proposerai quelque chose qui englobe aussi tes deux questions

Dan

comme le dit l'adage, sans maîtrise la puissance n'est rien. Autrement dit, je ne maitrise que très peu Excel (surtout le visual basic), du coup, je bricole un peu, d'où mes sytème de liste, recherchev et autres!

J'attends donc ta proposition, et comme on dit dans le nord, "jte dis quoi", même si je suis franc-comtois!

Thank's!

Re,

Vois le fichier joint dans lequel :

Feuille "saisie" : deux listes de validation (en jaune) qui te permette de faire le choix.

Feuille "matrices" : liste qui tu retrouves dans tes listes de validation de la feuille "saisie"

Feuille " Base" : ta base de données implémentée ou corrigée à partir de la feuille "saisie". La colonne contenant la croix ne sert plus.

Pour valider une donnée de la feuille "saisie", clique sur le bouton "valider" dans la feuille "saisie"

Pour corriger ou récupérer une donnée de la feuille "base" dans ton formulaire de la feuille "saisie", double clique sur le nom se trouvant dans la feuille "base"

Amicalement

Dan

44essai-recup.zip (12.79 Ko)
12utilisateurs.xlsm (161.50 Ko)

C'est super, et ta proposition est vraiment souple, et "légère"! MERCI!!

Il faut que je pige ton code maintenant, j'en ai pour environ 74 jours...

Quelques remarques, sur les fonctionalités souhaités (attention, ce ne sont pas des reproches!!) :

1)Quand on fait une seconde saisie, après une première, celà doit obligatoirement créer une seconde ligne dans la base. Or pour le moment, si à la seconde saisie, juste le métier change, après la validation, on a en fait modifié la première saisie, alors qu'une seconde ligne aurait du etre fabriquée.

Une saisie, ou une validation (en somme, un événement) doit etre, une fois dans la base concidéré comme figé. Sauf, effectivement, quand on veut le recharger via le double clic.

2)Le second petit soucis, qui recoupe je pense le premier. Quand on double clic (dans mon esprit = pour modifier un événement), si on modifie le nom, puis qu'on valide, une autre ligne va se créer, sous réserve qu'elle n'existe pas déjà. Alors que l'idée de "recharger" l'événement est de juste modifier ou d'aporter des mises à jour à l'événement.Qu'on modifie un ou tous les paramètres de la fiche de suivi, il ne doit pas y avoir d'ajout de ligne lorsuq'on corrige un événement.

Mais, ça m'ennuie de trouver ces défauts à ton code, qui je trouve est bien puissant quand même!

Merci à toi!

EDIT : J'y pense. Mon fichier n'est qu'un fichier exemple. En réalité, quand on accède à la fiche de saisie via une feuille d'accueil, tout les champs des listes, ainsi que tous les champs libres de saisi se remetent à blanc. Je sais le faire avec mon ancienne méthode, en jouant sur la cellule cible des listes objets, mais là. On verra ça si tu veux bien!

Re,

Vois le fichier joint avec les quelques modifications que tu as demandées.

Même principe de fonctionnement avec dans la feuille Saisie, un seul bouton multifonction pour valider les nouvelles entrées et pour valider les données récupérées de la feuille Base.

Amicalement

Dan

50essai-recup-v2.zip (13.31 Ko)

Excuse pour le retard.

je regarde ca demain, et jte dis ce qu'il en est. de toute façon, déjà : MERCI

-- Ven Avr 02, 2010 11:31 am --

Salut!

Ecoute c'est vraiment bien, on approche de ce que je cherche!!

Oui, il reste un petit couac. Et pour s'en rendre bien compte, j'ai ajouté un champ de saisi : un chiffre, pour bien voir ce que fait ma macro fait.

  • si je saisi 2 mêmes événements, sauf le chiffre qui change (ex : {Jean / ingénieur / 1} puis {Jean / ingénieur / 2})
  • si je veux modifier le second événement et modifier le métier par exemple, donc : {Jean / chef / 2}

Eh bien la macro va me modifier le métier sur le premier, et me garder tel quel le second.

J'ai encore un peu de mal à piger tout sur le code, alors je te pose la question, et je regarde de mon coté aussi.

En PJ, le fichier avec le champ supplémentaire.

43essai-recup-v2.zip (13.39 Ko)

Encore merci pour ton aide.

Re,

Attention que si tu ne globalises pas ton projet, on va devoir modifier les codes à chaque fois que tu veux quelque chose de nouveau.

Dans le cas que tu mentionnes, je te propose ceci :

  • Feuille Matrice, colonne A au lieu de colonne D : on met le numéro
  • Feuille Base : le numéro est repris en colonne C
  • Feuille saisie : On n'utilise G7 et G12 pour les données venant de la feuille Matrice. Le numéro est calculé est récupéré automatiquement sur base du nom en G7

Si ok pour toi, je modifierai le code en fonction

Dan

edit Dan : Le chiffre en colonne E de la feuille Base correspond au métier ou au nom ?

Rechercher des sujets similaires à "supprimer ligne vba amelioration macro"