XL 2013 La méthode Delete de la fonction range a échoué

louloubru

XLDnaute Junior
Bonjour,

encore une discussion qui porte ce nom ...
Vous l'aurez compris : cette erreur "La méthode Delete ... a échoué " s'affiche et je n'arrive pas à identifier le problème.
Je cherche à supprimer via un formulaire une ligne. L'utilisateur entre le nom de la ligne (donc ce qui est inscrit dans la première colonne de cette ligne) à supprimer dans le formulaire.
(NB : il ne peut pas y avoir d'erreur de saisie car les valeurs possibles pour la saisie sont définies par liste déroulante.)
Le code associé au bouton nommé Ok_Sup de mon formulaire :

VB:
Private Sub OK_Sup_Click()
    'Initialisation des variables
    Dim Ev As String
    Ev = Me.Evenement.Text 'Evenement est la ComboBox dans laquelle l'évènement (donc le nom de la ligne à supprimer) est entré
    
    'Supprime la ligne de l'évènement dans la feuille "Evènements"
        Sheets("Evènements").Activate
        Range(RefCellact(Ev)).Select
        Selection.EntireRow.Delete
    Call Unload(Me)

End Sub

La fonction RefCellact trouve la référence de la cellule contenant le texte entré. Elle fonctionne je l'ai déjà utilisé dans d'autres procédures sans soucis (également associé à Range.
Je vous mets le code ci-dessous si besoin de la comprendre :

Code:
Function RefCellact(Valeur)
    RefCellact = Cells.Find(Valeur, , xlValues).Address
End Function

Merci par avance !
 

Paf

XLDnaute Barbatruc
Bonjour,
Quelle valeur renvoie la fonction ?

la méthode Find renvoie un range. il aurait peut_être mieux valu écrire, en précisant le nom de la feuille (et la colonne pour gagner du temps) où chercher :
VB:
Function RefCellact(Valeur)
   set  Trouve = worksheets("nomdelafeuille").columns(1).Find(Valeur, , xlValues)
   RefCellact  = Trouve.address ' on peut s'affranchir de tester si Trouve existe puisqu'on sait que la valeur existe
End Function


Une autre solution, si la combobox Evenement liste toutes les données d'une colonne et dans l'ordre de cette colonne, utiliser la propriété ListIndex assortie d'un décalage pour correspondre au N° de ligne

A+
 

louloubru

XLDnaute Junior
Bonjour,
Quelle valeur renvoie la fonction ?

la méthode Find renvoie un range. il aurait peut_être mieux valu écrire, en précisant le nom de la feuille (et la colonne pour gagner du temps) où chercher :
VB:
Function RefCellact(Valeur)
   set  Trouve = worksheets("nomdelafeuille").columns(1).Find(Valeur, , xlValues)
   RefCellact  = Trouve.address ' on peut s'affranchir de tester si Trouve existe puisqu'on sait que la valeur existe
End Function


Une autre solution, si la combobox Evenement liste toutes les données d'une colonne et dans l'ordre de cette colonne, utiliser la propriété ListIndex assortie d'un décalage pour correspondre au N° de ligne

A+


Ca marche !!!
Merci beaucoup !

Mais je ne comprend pas : j'utilise cette fonction avec Range ailleurs sans soucis ... Etrange. (Elle renvoie les coordonnées donc avec un message box quelque chose comme $A$1 par exemple.

Merci encore je vais remplacer ma fonction pour ne plus avoir de problème.
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth