Effacer une ligne (VBA)

AnnePhiSo Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
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 =)



A voir également:

2 réponses

AnnePhiSo Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   2 761
 
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   Statut Membre Dernière intervention  
 
Merci Beaucoup,

Je regarderai ce soir si cela marche mieux ! Je vous tiens au courant !
0
AnnePhiSo Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   2 761
 
Bonjour,
oui car il manque .Row à la fin :
k = .Cells.find(nomeleve, xlvalues).Row
0
AnnePhiSo Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   2 761
 
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