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 :

Boucle sous conditions [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 6
    Points
    6
    Par défaut Boucle sous conditions
    Bonjour forum, bonjour fil,

    malgré de nombreuses recherches ci et là, je ne trouve pas de solutions pour effetuer une opération, et je pense que la seule solution pour y arriver est de passer par une macro. Or je ne connais pas le VBA et bien qu'intéressé je n'ai pas le temps pour pouvoir créer celle qui m'intéresse.

    Situation : Je souhaite copier des valeurs sous condition "cellule vide".

    Exemple : Si dans mon tableau onglet Test la cellule H5 n'est pas vide, alors tester H6, sinon recopier la ligne 5 dans l'onglet Macro.

    Et bien sur que cela me fasse tout le tableau (d'où un for next ou for each next, et pas un do loop ou un while)

    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for k=1 to 3 000
    if H'k'<>"" then aller ligne 'k+1' else copier ligne 'k'
    (ou if H'k'="" then copier ligne 'k' else aller ligne 'k+1' )

    Merci d'avance pour vos réponses et n'hésitez pas si je n'ai pas été clair.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Points : 243
    Points
    243
    Par défaut
    A partir et vers quelle plage de données souhaites-tu effectuer une copie?

    Tu souhaites copier uniquement la dernière cellule renseignée? Ou toutes celles dont la précédente est vide?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Exemple sur le lien ci-dessous

    http://imageshack.us/f/36/exemplea.png/

    Et ce, sur mes k lignes.

    Est-ce plus clair ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    Bonjour

    Ne te serait-il pas possible de nous fournir le fichier pour exemple. Histoire d'avoir quelque de plus dynamic sous les yeux

    Cordialement
    Novo

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Le problème est que le fichier contient un tas de liaisons et formules, et est donc extrêmement lourd.

    J'ai fait un extrait pour que vous puissiez voir.

    En fait, le soucis est que toutes les lignes où la case H est remplie = ligne existant précédemment dans le tableau. Donc pour y voir plus clair et éviter double, triple, voire plus, je cherche à supprimer ces lignes-ci.

    Merci d'avance.

    Cordialement.
    Fichiers attachés Fichiers attachés

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 51
    Points : 33
    Points
    33
    Par défaut
    Deux codes pour DEUX demandes:

    Demande #1
    Dans #1 j'ai cru que tu cherchais à copier la valeur d'une cellule N si la valeur de cette dernière était nulle.

    Voici le code pour #1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test1()
    Dim i As Integer, copieN As String
    For i = 18 To Worksheets("Feuil1").Range("a65536").End(xlUp).Row
        MsgBox Worksheets("Feuil1").Cells(i, 8)
        If not IsEmpty(Worksheets("Feuil1").Cells(i, 8)) and Worksheets("Feuil1").Cells(i, 8) = "0" Then
           copieN = Worksheets("Feuil1").Cells(i, 8)
        End If
    Next i
    End Sub

    Explication macro test1:

    Cette macro va parcourir toutes les lignes de ton tableau (de ligne 18 à la dernière ligne non vide). Si la valeur d'une des cellules de la colonne "H" est vide, la macro copie la valeur de cette cellule dans la variable "copieN".
    J'ai copier dans une variable car dans l'algo de ton premier message tu n'as spécifié l'endroit ou coller.

    Demande #5
    Dans ton message #5 tu cherches à supprimer les lignes non vide

    Voici le code pour #5

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub test2()
     
    Dim i As Integer
    For i = Worksheets("Feuil1").Range("a65536").End(xlUp).Row To 18 Step -1
        If Not IsEmpty(Worksheets("Feuil1").Cells(i, 8)) And _
        Worksheets("Feuil1").Cells(i, 8) <> "0" Then
            Worksheets("Feuil1").Rows(i).Delete
        End If
    Next i
    End Sub
    Next i

    Explications de la macro test2


    Cette macro va parcourir l'ensemble des cellules de la colonne H de ton tableau en décrémentant. A savoir de la dernière ligne non vide à la première ligne (1_ pour ton fichier). A chaque faut de la valeur d'une cellule de la colonne H est non vide (ou = à zéro) la ligne est supprimé.
    Voila l'ami en espérant que cela peut aider, n'hésite pas si le besoin s'en fait sentir.

    Cordialement
    Novo

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 21
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Cela m'a l'air de fonctionner Novo.
    Cependant, je pense que je vais essayer de trouver une autre solution car mes données sont bien trop complexes pour utiliser ce genre de procédé.

    Toutefois, je garde cette solution sous la main, cela peut toujours servir.

    Cordialement.

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

Discussions similaires

  1. Exécuter un script en boucle sous conditions
    Par jamy69 dans le forum VBScript
    Réponses: 6
    Dernier message: 20/03/2012, 10h55
  2. [XL-2010] boucle copie de plages sous condition
    Par vladouchka dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/04/2011, 10h52
  3. [E-07] boucle copy paste sous condition sur ligne particuliere
    Par dec3003 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2009, 17h36
  4. Appliquer un next sous conditions dans une boucle for
    Par Kibald dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/01/2009, 08h56
  5. Réponses: 1
    Dernier message: 17/07/2008, 12h50

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