Effacer une ligne (VBA)

Fermé
AnnePhiSo Messages postés 6 Date d'inscription lundi 24 mai 2010 Statut Membre Dernière intervention 28 mai 2010 - 24 mai 2010 à 20:00
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 29 mai 2010 à 09:14
Bonjour à tous,

Je suis actuellement en train de créer un logiciel de gestion d'absence et retard via Excel.
J'enregistre au préalable, via un UserForm, les personnes par leur nom, prénom... et un identifiant leur est automatiquement associé (valeur numérique 1, 2 3,..) Les personnes sont enregistrées dans une feuille Excel.
Je voudrais également créer un bouton Supprimer, qui supprimerait les personnes de cette feuille en entrant nom et prénom ou alors l'identifiant.

Le code avec identifiant est correct :
Dim a As String
 Dim i As Integer
    
    a = SupprimerEleve.txtIdentifiant.Text
    i = CStr(a)

    Sheets("Elèves").Cells(i + 1, 1).Value = ""
    Sheets("Elèves").Cells(i + 1, 2).Value = ""
    Sheets("Elèves").Cells(i + 1, 3).Value = ""
    Sheets("Elèves").Cells(i + 1, 4).Value = ""
    Sheets("Elèves").Cells(i + 1, 5).Value = ""
    Sheets("Elèves").Cells(i + 1, 6).Value = ""


En revanche, je n'arrive pas à créer un code correct pour la suppression en partant des noms et prénoms.
Je pense qu'il faut que mon programme cherche le nom dans la colonne des noms et ensuite lui associe le numéro de sa ligne, avant de supprimer la ligne en entier par la méthode précédente.

Pouvez-vous m'aider ? Merci d'avance =)



2 réponses

AnnePhiSo Messages postés 6 Date d'inscription lundi 24 mai 2010 Statut Membre Dernière intervention 28 mai 2010
24 mai 2010 à 20:08
Je précise avoir essayé ca, mais ca ne marche pas :

Dim k As Integer
k = 2
   Do Until
    Sheets("Elèves").Cells(k, 2).Value = SupprimerEleve.txtNom.Value
    k = k + 1
   Loop
    
    
    Sheets("Elèves").Cells(k + 1, 1).Value = ""
    Sheets("Elèves").Cells(k + 1, 2).Value = ""
    Sheets("Elèves").Cells(k + 1, 3).Value = ""
    Sheets("Elèves").Cells(k + 1, 4).Value = ""
    Sheets("Elèves").Cells(k + 1, 5).Value = ""
    Sheets("Elèves").Cells(k + 1, 6).Value = ""
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
Modifié par pijaku le 25/05/2010 à 12:48
Bonjour,
Effectivement, il faut chercher le n° de la ligne correspondante à la donnée cherchée. Par exemple avec la fonction find : (je suppose que le nom à trouver est en colonne 2 de la feuille "eleves" :
Dim i As Integer   
Dim nomeleve As String   
nomeleve = InputBox("Veuillez saisir le nom de l'élève à supprimer")   
With Sheets("eleves").Columns(2)   
i = .Cells.find(nomeleve, xlvalues).Row   
.Rows(i).EntireRow.Delete   
End With 
Tu trouveras ici un exemple que j'avais réalisé pour un autre membre de ce forum. Les codes des procédures liées aux 2 UserForm sont décrites.

Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
0
AnnePhiSo Messages postés 6 Date d'inscription lundi 24 mai 2010 Statut Membre Dernière intervention 28 mai 2010
25 mai 2010 à 13:48
Merci Beaucoup,

Je regarderai ce soir si cela marche mieux ! Je vous tiens au courant !
0
AnnePhiSo Messages postés 6 Date d'inscription lundi 24 mai 2010 Statut Membre Dernière intervention 28 mai 2010
25 mai 2010 à 21:36
La ligne :
k = .Cells.Find(nomeleve, xlValues)
n'est pas reconnue par Excel : il me dit erreur de type "13"...
Que faire ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
26 mai 2010 à 08:22
Bonjour,
oui car il manque .Row à la fin :
k = .Cells.find(nomeleve, xlvalues).Row
0
AnnePhiSo Messages postés 6 Date d'inscription lundi 24 mai 2010 Statut Membre Dernière intervention 28 mai 2010
26 mai 2010 à 09:02
Bonjour !

Je viens de remplacer le .Row et la ligne bug toujours... Je ne sais pas trop quoi faire du coup, toujours erreur "13"
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
26 mai 2010 à 09:21
erreur 13 - incompatibilité de type. Signifie que l'on essaye d'attribuer à une variable une valeur d'un autre type. Exemple :
Dim k As Boolean
k = .Cells.find(nomeleve, xlvalues).Row

As tu bien déclaré k comme Integer?
Dim k As Integer en début de procédure?
0