Macro recherche + suppression

  • Initiateur de la discussion Initiateur de la discussion queequeg0226
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Q

queequeg0226

Guest
Bonjour à tous,

Je commence à apprendre le langage VBA et cela me permet assez compliqué. J'imagine qu'avec l'habitude cela devient de + en + simple mais pour le moment je galère un petit peu.
🙁

Alors pour le moment j'ai un formulaire qui me permet de rentrer des données dans un tableau. Ce que je voudrais, c'est grâce à une macro, que le bouton RECHERCHE me trouve le nom que j'ai rentré et qu'il m'affiche ainsi dans mon formulaire toutes les données disponibles par rapport au nom donné.
j'aimerais le faire avec une fonction IF assez simple du genre :
Si dans la feuille il y a le même mot que dans la textbox1 : qu'il me renvoie les autres infos ; sinon un petit message apparaît : le nom recherché n'existe pas.
Grâce à cela j'activerais ma fonction SUPPRIMER et cela effacerait ma ligne entière de données par rapport au nom que j'ai rentré.

Je ne sais pas si j'ai été assez claire ?
Merci de bien vouloir m'aider si possible avec quelque chose de simple que ma petite tête voudrait bien encaisser !

Bonne soirée à tous
😉
 
Re : Macro recherche + suppression

Bonjour et bienvenue sur le forum,

J'ai une idée de ce que tu veux, mais il y a tellement de situations différentes possibles, qu'il nous faudrait un classeur exemple. Avec quelque données et le Travail que tu as déjà fait plus quelques précisions.

S'agit-il de trouver un mot (nom) dans une colonne ou toute la feuille?
Les noms sont -ils uniques?

A+
 
Re : Macro recherche + suppression

Bonjour,

Merci de ta réponse. Alors voilà j'attache ce que j'ai effectué.
Donc les noms sont seulement dans la 1re colonne et pour le moment ils resteront uniques.
Nous avons fait ça en cours d'informatique mais malheureusement je ne vois pas comment continuer avec cette fonction recherche.
J'espère que cela ne te dérange pas de jeter un coup d'oeil et de me dire s'il serait possible de faire ça le + simplement possible.

Merci encore,
Bonne journée.
 

Pièces jointes

Re : Macro recherche + suppression

Bonjour,

Le but n'étant pas ici de faire des applications complètes mais de partager des connaissances, dans le fichier joint tu trouveras une façon de faire.

1 - Les noms des contrôles ont été changés pour permettre une meilleur lisibilté du code (TextBox1 -> tbNom, CommandButton4 -> cmdValider, etc.)

2 - une technique simple de recherche utilisant la fonction de feuille de calcul 'Equiv' (match en anglais)

3 - une façon de trouver la prochaine ligne vide d'une colonne.

A+
 
Dernière modification par un modérateur:
Re : Macro recherche + suppression

Je te remercie pour ce que tu as fait. Je m'y mettrai plus sérieusement ce soir pour essayer de comprendre le fonctionnement des formules.
Est-ce en faisant régulièrement des formules que l'on arrive à ce niveau ou y a t il un moyen assez simple de connaître tout ce langage ?

Merci encore pour ton aide précieuse.
 
Re : Macro recherche + suppression

Bonjour,

Est-ce en faisant régulièrement des formules que l'on arrive à ce niveau ou y a t il un moyen assez simple de connaître tout ce langage ?

C'est en forgeant.....😀

Un bon forgeron a toujours suivit un apprentissage, peut-être long, mais progressif....

A+
 
Re : Macro recherche + suppression

Bonsoir !

je reviens vers toi après quelques heures de recherche infructueuse.
J'ai fait plusieurs tentatives pour insérer une suppresion après qu'il y ait eu recherche mais malheureusement aucune ne fonctionne... soit ça me supprime une ligne au hasard (la 1re d'ailleurs) soit il ne se passe rien.

Je ne sais pas si je m'y prends mal, mais je pense qu'il faut que je dise dans la cmd rechercher qu'une fois qu'il a trouvé la ligne, il la supprime si j'appuie sur le bouton supprimer non ? alors voilà j'ai voulu faire comme ça :

Private Sub cmdRechercher_Click()

Dim idxTmp As Variant
If Trim(tbNom) <> "" Then
With Sheets("Feuil2")
idxTmp = Application.Match(tbNom, .Range("A:A"), 0)
i = 1
If Not IsError(idxTmp) Then
ChargerLigne (idxTmp)
Rows(i).Delete
i = i - 1

Else
MsgBox "Le nom:'" & tbNom & "' n'a pas été trouvé", vbExclamation, "Rechercher un nom"
End If
End With
End If
End Sub
cmdSupprimer.Enabled = True

Bon, j'imagine que je cafouille complètement mais si je mets quelque chose directement dans la commande supprimer ce n'est pas possible, si ?

Si jamais je ne suis pas assez claire je peux te mettre en fichier joint ce que j'ai fait, mais vu que ça ne fonctionne pas je n'étais pas sûre que ça te soit très utile.

Merci !
Bonne soirée !
 
Re : Macro recherche + suppression

Bonjour,

Voici la procédure de suppression commentée.
Mais avant, crée une variable en tête de module (tout en haut avant la première procédure) nommée LigneAffichee qui contiendra le numéro de ligne affichée dans le userForm.

Cette variable, il faut l'initialiser dans la procédure 'ChargerLigne' (en rouge ci-dessous)

Code:
Private Sub ChargerLigne(ByVal idxLigne As Long)
    If idxLigne < 2 Then Exit Sub
    With Sheets("Feuil2").Range("A" & idxLigne)
        tbNom = .Cells(1, 1)
        cbSexe.Value = .Cells(1, 2)
        tbTaille.Text = .Cells(1, 3)
        tbPoids.Text = .Cells(1, 4)
        [SIZE=3][COLOR=red]LigneAffichee = idxLigne[/COLOR][/SIZE]
    End With
End Sub

Cette variable contient donc maintenant la ligne qui vient d'être affichée.
Elle peut te servir pour toute opération sur cette ligne. Dont la suppression que voici, où elle est réinitialisée à zéro si la suppression est confirmée.

Code:
Private Sub cmdSupprimer_Click()
 If LigneAffichee > 0 Then
    'Demander confirmation de suppression de la ligne
    If MsgBox(Msg, vbYesNo + vbQuestion, "Suppression ligne") = vbYes Then
        'Si l'utilisateur a répondu Oui, supprimer toute la ligne
        Sheets("Feuil2").Cells(LigneAffichee, 1).EntireRow.Delete
        'Appeler la procédure d'initialisation des zones de saisie
        [COLOR=seagreen]CommandButton1_Click[/COLOR]
        'réinitialiser la variable LigneAffichee
        [SIZE=3][COLOR=red]LigneAffichee = 0[/COLOR][/SIZE]
    End If
 End If
End Sub

Récapitulons.

1 - à l'ouverture du userform tu auras ta Variable qui vaudra 0

2 -Tu charges une ligne et tu initialise tes contrôles et ta variable avec le numéro de ligne chargée

3 - dans tes procédures tu utilises cette variable pour atteindre ta ligne et ces cellules.

A+
 
Re : Macro recherche + suppression

Bonsoir,

Merci pour ton aide. Désolée de t'embêter encore mais quand tu dis qu'il faut que je définisse une variable en tête de module je n'y arrive pas...

Ca me renvoie toujours un message d'erreur : erreur de compilation : argument non facultatif.

Je dois surement m'y prendre mal quand je définis cette variable !

Pourrais tu m'aider une dernière fois STP ? j'ai cherché un moment avant de m'adresser à nouveau à toi, je ne voulais pas te déranger mais là je sèche.

Merci,
Bonne soirée !
 
Re : Macro recherche + suppression

bonjour,

Ca me renvoie toujours un message d'erreur : erreur de compilation : argument non facultatif.

Apparament ce message ne semble pas avoir de rapport (au moins direct) avec ce que tu dis. Sans doute utilises-tu une fonction VBA ou une procédure dont tu as oublié de renseigner un paramètre.

Lorsque tu postes pour une erreur, ce serait bien de dire sur quelle ligne le l'application bug. Lors du déclenchement de l'erreur une fenêtre de message s'ouvre te donant l'erreur et te proposant, d'arrêter le programme ou un débogage. Click sur débogage, l' editeur (VBE) s'ouvre sur la ligne, (colorée en jaune) qui coince. Il faut dire quelle ligne, à quelle procédure 'sub ou function' elle appartient.

Eventuellement joint ton fichier avec ce que tu as fais. S'il est trop gros, synthétise un exemple qui reproduit l'erreur.

A+



.
 
Re : Macro recherche + suppression

Bonsoir,

Alors voilà je te mets en pièce jointe le fichier. Je n'ai pas fait grand chose par rapport à ce que tu m'as donné.
Je n'ai plus l'erreur que je te disais mais je ne sais pas si c'est bien comme ça que je dois intégrer la variable puisque la commande supprimer ne fonctionne pas après avoir effectué ma recherche.

Merci de ton aide,
Bonne soirée !
 

Pièces jointes

Re : Macro recherche + suppression

bonjour,

Alors:

1 - la variable s'appelle ligneAffichee et non ligneAffiche. Pour éviter ce genre de méprise, mettre en tête de tout module de macro ou de userForm Option Explicit. Comme cela en cas de variable non déclarée ou mal écrite VBA le signalera.

2 - une fois le nom trouvé, et la ligne chargée, il faut autoriser le bouton 'supprimer' (je l'ai renommé cmdSupprimer).

Et tout rentre dans l'ordre.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
573
Réponses
15
Affichages
530
Réponses
7
Affichages
469
  • Question Question
Microsoft 365 problème d'index
Réponses
19
Affichages
498
D
  • Question Question
Réponses
5
Affichages
250
Didierpasdoué
D
Retour