XL 2013 (resolu par Job75)bug a C non déclaré

grisan29

XLDnaute Accro
bonsoir a tous et toutes
j'ai un code pour supprimer la ligne du client dont son nom se trouve en TextBox2, j'ai C qui bug avec variable non définie, j'ai mis C as integer et c'est l'ojet qui est requis, bref je plane dessus depuis un moment et je vois plus, donc je fait appel a vos lumières
Code:
Private Sub CommandButton4_Click()
On Error Resume Next
Dim nom As String, ligne As Long ', C As Integer
nom = TextBox2
With Sheets("CLIENTS").Range("C2:" & Range("C2").End(xlDown).Address)
    Set C = .Find(nom, LookIn:=xlValues)
    ligne = C.Row

Sheets("CLIENTS").Rows(ligne).Delete Shift:=xlUp
End With
Unload Me
End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour,

à main levée avant d'aller au lit...
VB:
Dim C as Range
Ensuite, à moins d'être sûr à 100% que nom sera toujours trouvé, il faut tester si .find a trouvé :
VB:
If not C is nothing then
   ligne = C.Row
   ' etc
Else
  ' si non trouvé
End If
eric
 

job75

XLDnaute Barbatruc
Bonjour grisan29, eriiiic,

Bah il est inutile de créer des variables pour si peu :
Code:
Private Sub CommandButton4_Click()
On Error Resume Next
Sheets("CLIENTS").Range("C2:C" & Rows.Count).Find(Textbox2, , xlValues, xlWhole).EntireRow.Delete
Unload Me
End Sub
ou encore mieux :
Code:
Private Sub CommandButton4_Click()
On Error Resume Next
With Sheets("CLIENTS")
  .Rows(Application.Match(Textbox2, .[C:C], 0)).Delete
End With
Unload Me
End Sub
A+
 

job75

XLDnaute Barbatruc
Re,

Allons allons grisan29 la colonne C contient les prénoms, le code fonctionne très bien si l'on entre des prénoms dans TextBox2.

Si vous voulez rechercher des noms vous n'avez qu'à modifier le code en conséquence !!!

Bonne fin de soirée.
 

job75

XLDnaute Barbatruc
Bonjour grisan29, le forum,

Même si c'est rare il peut y avoir des homonymes.

Alors pour ne pas avoir de problème prenez cette macro qui utilise le filtre automatique :
Code:
Private Sub CommandButton4_Click()
If TextBox2 = "" Then Exit Sub
With Sheets("CLIENTS").[A1].CurrentRegion
  .AutoFilter 4, TextBox2
  Select Case .SpecialCells(xlCellTypeVisible).Count / .Columns.Count
    Case 1: MsgBox "Le nom n'existe pas...": GoTo 1
    Case Is > 2: MsgBox "Il y a des doublons, supprimez la ligne manuellement...": .Parent.Activate: GoTo 2
  End Select
  .Rows(Application.Match(TextBox2, .Columns(4), 0)).Delete xlUp
  MsgBox "'" & TextBox2 & "' a été supprimé..."
1 .AutoFilter
End With
2 Unload Me
End Sub
Bonne journée.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Une variante un peu plus élaborée :
Code:
Private Sub CommandButton4_Click()
If TextBox2 = "" Then Exit Sub
With Sheets("CLIENTS").[A1].CurrentRegion
  .AutoFilter 4, TextBox2
  Select Case .SpecialCells(xlCellTypeVisible).Count / .Columns.Count
    Case 1
      .AutoFilter
      MsgBox "Le nom n'existe pas..."
      TextBox2.SetFocus
      TextBox2.SelStart = 0
      TextBox2.SelLength = Len(TextBox2)
      Exit Sub
    Case Is > 2: MsgBox "Il y a des doublons, supprimez la ligne manuellement...": .Parent.Activate: GoTo 1
  End Select
  .AutoFilter
  .Rows(Application.Match(TextBox2, .Columns(4), 0)).Delete xlUp
  MsgBox "'" & TextBox2 & "' a été supprimé..."
End With
1 Unload Me
End Sub
A+
 

grisan29

XLDnaute Accro
bonsoir Job75
merci de ta réponse, mais ce classeur n'est pas pour moi je comprends bien ce que tu veux dire
mais sur le dernier code il y a un bug a cette ligne
Code:
   Case Is > 2: MsgBox "Il y a des doublons, supprimez la ligne manuellement...": .Parent.Activate: GoTo 1
et le premier code lui fonctionne bien
merci beaucoup a toi
 

Discussions similaires

Réponses
28
Affichages
967

Statistiques des forums

Discussions
312 080
Messages
2 085 149
Membres
102 794
dernier inscrit
espinata