IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Supprimer une ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut Supprimer une ligne
    Je dois faire une fct qui supprime la ligne du numéro de projet qu'on rentre dans un inputbox. Mais la ligne ne se supprime pas. J'ai essayé un test sans le for et la ligne se supprime lorsque je rentre le numéro. Donc je présume que mon For est le problème. C'est quoi qui ne marche pas ?

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim demande_de_suppression As Integer
    Dim i As Integer
     
        demande_de_suppression = Val(InputBox("Veuillez entrer le numéro de chantier à supprimer"))
     
        ' Si le numéro de chantier se retrouve dans la liste, on supprime la ligne
        ' correspondante et on confirme sa suppression.
        For i = Worksheets("Chantiers").Cells(5, COLONNE_NUMERO_PROJET) To Worksheets("Chantiers").Cells(30, COLONNE_NUMERO_PROJET)
            If Worksheets("Chantiers").Cells(i, COLONNE_NUMERO_PROJET).Value = demande_de_suppression Then
                Worksheets("Chantiers").Cells(i, COLONNE_NUMERO_PROJET).EntireRow.Delete
            End If
        Next

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    C'est juste une question de logique : en observant lors d'une suppression manuelle d'une ligne, que se passe-t-il ?

    L'astuce consiste à effectuer une boucle de la dernière ligne vers la première …

    Et conformément aux règles du forum, merci d'utiliser l'icône dédiée au balisage du code !

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut
    Désolé pour la balise.

    Oui en changeant la boucle de la fin vers le début je n'ai plus d'erreur dans mon For. Maintenant quand j'exécute la fonction je n'ai plus d'erreur, mais le numero de projet que je demande d'effacer ne s'efface pas(la ligne correspondante au numéro de projet).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim demande_de_suppression As Integer
    Dim i As Integer
     
        demande_de_suppression = Val(InputBox("Veuillez entrer le numéro de chantier à supprimer"))
     
        ' Si le numéro de chantier se retrouve dans la liste, on supprime la ligne
        ' correspondante et on confirme sa suppression.
        For i = Worksheets("Chantiers").Cells(25, COLONNE_NUMERO_PROJET) To Worksheets("Chantiers").Cells(5, COLONNE_NUMERO_PROJET)
            If Worksheets("Chantiers").Cells(i, COLONNE_NUMERO_PROJET).Value = demande_de_suppression Then
               Worksheets("Chantiers").Cells(i, COLONNE_NUMERO_PROJET).EntireRow.Delete
            End If
        Next

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    le pas d'une boucle FOR est +1 par défaut , pour le changer il faut le préciser.,en rajoutant step <Valeur du pas> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR i = 10 to 0 step -1

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Par défaut
    Merci ça fonctionne maintenant. Dans mon For j'ai fais tout simplement de ligne 26 à ligne 5. Mais je comprends pas, me semble que ce que j'avais écris auparavant(dans mon For) était la même chose? Sauf écrit en terme de ligne, colonne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Sub Supprimer_Chantier()
     
    Dim demande_de_suppression As Integer
    Dim i As Integer
     
        demande_de_suppression = Val(InputBox("Veuillez entrer le numéro de chantier à supprimer"))
     
            For i = 26 To 5 Step -1
                If Worksheets("Chantiers").Cells(i, COLONNE_NUMERO_PROJET).Value = demande_de_suppression Then
                    Worksheets("Chantiers").Cells(i, COLONNE_NUMERO_PROJET).EntireRow.Delete
                End If
            Next
     
     
    End Sub



    Dernière chose une explication de Range, svp. Ça permet de définir une plage genre Range(?,?). Est-ce qu'il y a moyen de se débrouiller avec Cells uniquement ou bien range facilite la vie?

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Quelquefois, Cells est plus facile d'utilisation, mais ça donne le même résultat
    Si N = 5
    Range("A5") ou Range("A" & N) équivaut à Cells(5, 1) ou Cells(N, 1)

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par melissa-117 Voir le message
    Merci ça fonctionne maintenant. Dans mon For j'ai fais tout simplement de ligne 26 à ligne 5. Mais je comprends pas, me semble que ce que j'avais écris auparavant(dans mon For) était la même chose? Sauf écrit en terme de ligne, colonne....
    Tu n'avais pas à tout changer dans ton for , juste rajouter le pas : step -1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] supprimer une ligne
    Par helene22500 dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2005, 10h27
  2. [JTable] Supprimer une ligne d'un jtable
    Par Orionmel dans le forum Composants
    Réponses: 5
    Dernier message: 05/11/2004, 22h29
  3. [C#] Comment supprimer une ligne dans DataGrid ?
    Par BAUDIER dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2004, 16h03
  4. supprimer une ligne avec cle etrangere
    Par BaBas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/07/2003, 11h24
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo