Effacer une ligne (VBA)

AnnePhiSo Messages postés 7 Statut Membre -  
pijaku Messages postés 13513 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 =)

2 réponses

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

      Je regarderai ce soir si cela marche mieux ! Je vous tiens au courant !
      0
    2. AnnePhiSo Messages postés 7 Statut Membre
       
      La ligne :
      k = .Cells.Find(nomeleve, xlValues)
      n'est pas reconnue par Excel : il me dit erreur de type "13"...
      Que faire ?
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,
      oui car il manque .Row à la fin :
      k = .Cells.find(nomeleve, xlvalues).Row
      0
    4. AnnePhiSo Messages postés 7 Statut Membre
       
      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
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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