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

Excel Discussion :

aide sur une boucle


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut aide sur une boucle
    Bonjour,

    J'ai fait une macro qui permet d'importer des dates dans une colonne.
    Maintenant j'aimerais lui dire que si les dates importer diffèrent de "01/01/2100", il doit supprimer la ligne entière de la colonne où les dates ont été importées !
    J'ai un bug au niveau de la ligne que je surligne... Il me dit "tableau attendu" et je ne comprend pas pourquoi.

    Quelqu'un peut me renseigner ?

    Sub IMPORTE_DATESORTIE()

    Call DEPROTEGE_FORMATION

    If MsgBox("Voulez-vous affecter les dates de sortie dans la base de données ?", vbCritical + vbOKCancel, "Importe les dates de sortie") = vbCancel Then
    Call PROTEGE_FORMATION
    Exit Sub
    End If

    Dim i As Long, j As Long

    For i = 2 To Sheets("BD SORTIE").Range("A" & Sheets("FORMATION BD").Rows.Count).End(xlUp).Row
    For j = 9 To Sheets("FORMATION BD").Range("A" & Sheets("FORMATION BD").Rows.Count).End(xlUp).Row
    If Sheets("BD SORTIE").Range("E" & i).Value <> "" And Sheets("BD SORTIE").Range("A" & i).Value = Sheets("FORMATION BD").Cells(j, 1).Value Then
    Sheets("FORMATION BD").Range("J" & j).Value = Sheets("BD SORTIE").Range("E" & i).Value
    End If
    Next j
    Next i

    If MsgBox("Voulez-vous supprimer les personnes sorties de la base ?", vbCritical + vbOKCancel, "Suppression personnel sortie de la base") = vbCancel Then
    Call PROTEGE_FORMATION
    Exit Sub
    End If

    Dim k As Long
    Dim dateimport As Date

    With worksheets("FORMATION BD")
    For k = 9 To Sheets("FORMATION BD").Range("A" & Sheets("FORMATION BD").Rows.Count).End(xlUp).Row
    If dateimport(k, 10).Value <> "01/01/2100" Then
    End If
    Next k
    End With

    Call PROTEGE_FORMATION
    End Sub

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    As-tu essayé de faire un msgbox sur ta valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dateimport(k, 10).Value

    PS : n'oublie pas de mettre les balises CODE quand tu met du code, sinon c'est illisible

    De plus, dateimport est une date si j'ai bien compris.

    ne serait-ce pas plutôt ça :

    Que tu voulais écrire ? Je comprend aps trop ce que tu veux faire là
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Que tu voulais écrire ? Je comprend aps trop ce que tu veux faire là [/QUOTE]

    En fait je voudrais lui faire dire que si les cellules contiennent "01/01/2100" dans la colonne J et à partir de la ligne 9, il doit alors supprimer toute la ligne....

    Comment je fais pour mettre les balises CODE svp ?

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Oui donc c'est bien ça :

    Que tu dois écrire.

    Pour mettre les balises CODE, quand tu tape ton message, tu as un "#" dans la barre de mise en forme => ça met alors des balises CODE (fait un "citer" d'un de mes messages, tu verras )
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par illight Voir le message
    Oui donc c'est bien ça :

    [/CODE]Que tu dois écrire.

    Pour mettre les balises CODE, quand tu tape ton message, tu as un "#" dans la barre de mise en forme => ça met alors des balises CODE (fait un "citer" d'un de mes messages, tu verras )
    J'ai testé, mais les lignes ne se suppriment pas...

    Exemple :
    Matricule NOM PRENOM Colonne J (Date sortie)
    1 Toto 15/02/2013
    2 Tata 01/01/2100
    3 Titi 19/08/2013
    4 Tutu 01/01/2100

    Normalement les lignes toto et titi devrait se supprimer... mais ma macro ne marche pas, même avec


  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Tu l'écris où ta suppression ?
    Dans le code que tu as mis, je ne vois pas de Delete
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Ouai, pas très malin....
    Je viens d'écrire
    then
    rows(k).delete

    Il me supprime pas toutes les lignes, seulement quelques unes. Il faut que je clique plusieurs fois sur le bouton pour qu'enfin toutes les lignes soient supprimées...
    C'est normal ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    Je pense que c'est du à la boucle qui doit être dans le IF non ?

    Si je fais ce code ci-dessous, j'ai un bug au niveau où c'est surligné :

    With worksheets("FORMATION BD")
    If Cells(k, 10).Value <> "01/01/2100" Then
    For k = 9 To Sheets("FORMATION BD").Range("A" & Sheets("FORMATION BD").Rows.Count).End(xlUp).Row
    Rows(k).Delete
    Next k
    End If
    End With

    d'où vient le problème à ton avis ?

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Worksheets("FORMATION BD")
    For k = Sheets("FORMATION BD").Range("A" & Sheets("FORMATION BD").Rows.Count).End(xlUp).Row To 9 Step -1
      If Cells(k, 10).Value <> "01/01/2100" Then
        Rows(k).EntireRow.Delete
      End If
    Next k
    End With
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    en fait j'ai trouvé la réponse ! (première fois depuis que je suis sur le forum !)

    With worksheets("FORMATION BD")
    'pour supprimer des lignes il vaut mieux commencer par la dernière ligne, et remonter.
    For k = Sheets("FORMATION BD").Range("A" & Sheets("FORMATION BD").Rows.Count).End(xlUp).Row To 9 Step -1
    If Cells(k, 10).Value <> "01/01/2100" Then
    Rows(k).Delete
    End If
    Next k
    End With

    Merci quand même pour l'aide apporté, ça m'a beaucoup aidé !

  11. #11
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    C'est ce que j'allais dire : fait une boucle à l'envers
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    COMPTABLE
    Inscrit en
    Novembre 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : COMPTABLE
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 76
    Points : 36
    Points
    36
    Par défaut
    je viens de voir que casefayere vient de répondre à la question alors que je viens de poster la réponse lol

    Néanmoins, je confirme que ça marche casefeyere.

    Merci poru ton aide !

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

Discussions similaires

  1. [XL-2013] VBA function.Vlookup debogage et aide sur une boucle
    Par Jeremy.ch dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/08/2014, 09h32
  2. [XL-2013] Besoin d'aide sur une boucle en vba dans excel
    Par ppfun dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2014, 20h25
  3. Aide sur une boucle
    Par jackborogar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2012, 15h55
  4. Aide sur une boucle infinie
    Par willyol3 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2010, 09h47
  5. Aide sur une boucle for
    Par Kemanke dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 11/12/2008, 14h13

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