Probleme fonction supprimer avec 3 critères tapés dans 3 textbox

Signaler
Messages postés
1
Date d'inscription
lundi 26 janvier 2009
Statut
Membre
Dernière intervention
26 janvier 2009
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonsoir,
Je suis débutant dans la programmation VBA.
Je crée un répertoire sur 11 colonnes Excel (nom, prénom, num, code postal...) qui commence en A3.
J'ai un problème avec la fonction supprimer; avec un seul critère elle fonction mais pour éviter les erreurs (personnes
ayant le même nom...) j'ai décidé d'utiliser 3 critères (Nom, Société, Échéance) comme suit:

Dim nomfamille As String
Dim prenom As String
Dim societe As String
Dim codepostal As String



<hr size="2" width="100%" />

Sub rechercher()
NOM = TextBox1.Text
Société = TextBox2.Text
Echéance = TextBox3.Text
Feuil1.Range("A3").Select
While Selection.Offset(0, 1).Value <> NOM And Selection.Offset(0, 0).Value <> ""
    Selection.Offset(1, 0).Select
Wend
While Selection.Offset(0, 3).Value <> Société And Selection.Offset(0, 0).Value <> ""
    Selection.Offset(1, 0).Select
Wend
While Selection.Offset(0, 10).Value <> Echéance And Selection.Offset(0, 0).Value <> ""
    Selection.Offset(1, 0).Select
Wend
If Selection.Offset(0, 1).Value NOM And Selection.Offset(0, 3).Value Société And Selection.Offset(0, 10).Value = Echéance Then
nomfamille = Selection.Offset(0, 1).Value
prenom = Selection.Offset(0, 2).Value
societe = Selection.Offset(0, 3).Value
codepostal = Selection.Offset(0, 5).Value
End If

End Sub



<hr size="2" width="100%" />

Private Sub ButtonSupprimer_Click()
rechercher
ligne = Selection.Row
rep = MsgBox("La mission à supprimer est : " & nomfamille & prenom & societe & codepostal, vbYesNo)
If rep = 6 Then
Rows(ligne).Select
Selection.Delete Shift:=xlUp
End If
End Sub

Il y a des erreurs où la msgbox affiche les mauvais nom et ou elle n'affiche pas les informations demandées.
HELP PLEASE.
Merci à vous tous...

1 réponse

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
VBA est du VBA, pas du .NET : Modif catégorie de la question

Si tu as des erreurs, dis nous lesquelles.
D'après ton programme :
Tu cherches NOM dans B.
Si tu ne le trouves pas, tu descends d'une ligne.
Si tu le trouves, tu te déplaces en colonne D et tu recherches Société
Si tu ne le trouves pas, tu descends d'une ligne.
... mais qui te dis que la ligne suivante correspond toujours à NOM ?

Si tu dois chercher exactement la ligne qui contient ces 3 critères, il ne faut faire qu'une seule boucle et tester si chacun des critères est résolu sur la ligne actuelle (comme tu l'as fait dans le IF qui suit tes 3 boucles), et tu boucles Ligne+1 tant que ce n'est pas bon (ou vide)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)