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 :

[VBA-E] Comment avancer d'une ligne quand la précedente est pleine ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut [VBA-E] Comment avancer d'une ligne quand la précedente est pleine ?
    Bonsoir,

    Me revoila pour la deuxième fois aujourd'hui. J'ai résolu mes petits problèmes précédents, mais me voila confronté à une nouvelle problèmatique.
    Sur mon code précédent, je copiais les données d'une colonne, vers une ligne dans une autre feuille. Un contrôle permet de tester si une celulle précédente est pleine ou vide. Cela permet de passer à la ligne suivante ou non et le tout avec ce code :

    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
    16
    Sheets("XXX").Select
    valeurA2 = Range("A2").Value
    If valeurA2 = "" Then
    Range("A2").Select
    Else
    Range("A1").Select
    Selection.End(xlDown).Select
    ligne_active_base = ActiveCell.Row
    Range("A" & ligne_active_base + 1).Select
    End If
     
    ligne_active_base = ActiveCell.Row
     
    Range("A" & ligne_active_base).Select
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    Ca marche terrible mais maintenant que je selectionne des celulles un peu partout dans une feuille, et bien je n'arrive plus à sauter de ligne dans la feuilles de recopie des infos voulues.
    Pour être plus clair, imaginez que vous avez les celulles A2 à W22 remplies par des données dans la feuille "XXX"
    Et bien je souhaiterai passer à la ligne de A3 à W23 si la Cellule A2 est pleine et ainsi de suite, (Si la celulle A3 est pleine, alors passer à la ligne A4 pour la remplir avec mes données de A4 à W24) ...

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    à la place de Selection, utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A" & ligne_active_base).PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    et incrépente ligne_active_base chaque fois que la ligne est "remplie"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut
    J'ai le même résultat avec ce petit changement. J'ai beau chercher mais je ne trouve pas de solution pour le moment.

    Merci d'avoir essayé, si tu as d'autres idées, elles seront les bienvenues.


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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Avec une boucle de ce genre la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        For c = 2 To Rows.Count
            If Cells(c, 1).Value = "" Then
                Cells(c, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                Exit For
            End If
        Next c
    Qui colle la colonne copiée (bien sur il faut copier la ligne avant en faisant un rows.copy) qui colle la ligne quand c'est vide

    A toi après de le mettre en place pour ce que tu veux faire suivant si c'est une ligne ou une cellule que tu veux copier
    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
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut
    Ca m'a l'air pas mal comme code, mais où dois-je le placer ?

    "Qui colle la colonne copiée (bien sur il faut copier la ligne avant en faisant un rows.copy) qui colle la ligne quand c'est vide", Je suis un gros nul mais je ne comprend pas.

    "A toi après de le mettre en place pour ce que tu veux faire suivant si c'est une ligne ou une cellule que tu veux copier"
    La ce sont plusieurs cellules identifiées et dispercées que je veux recopier en une seule ligne. Et au fur et à mesure un tableau, (sur une autre feuille ou dans un autres fichier Xls), se constitue avec les donnéees d'un formulaire.

    J'espère que je suis clair.

    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut
    Aprés quelques essais, la ligne est bien copiée, le curseur passe bien à la cellule suivante. Mais le problème reste le même, à savoir que les données du formulaire se recopient sur la première ligne, (de A2 à W22).
    Même si je lui entre de données manuelles de A3 à W23, les données se placent toujours en A2.
    Rien à faire, il ne va pas de lui même en A4

    Dur, Dur le code, mais je m'accroche .

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Le code que j'ai commence a 2, c'est peut etre pour ça

    Pour que mon code marche la, il faut que les cellules A1 et B1 ait des donnée ssinon ça marchera pas


    Je vais t'expliquer ce que j'ai écrit avec des commentaire sous chaque phrase :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For c = 2 To Rows.Count
    'parcours la feuille courante en commencant a partir de la deuxième ligne
            If Cells(c, 1).Value = "" Then
    'regarde si la cellule "Ac" (c étant la variable qui boucle) est vide
                Cells(c, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    'si c'est vide, ça colle la ligne la où c'est vide
                Exit For
    'ça sort de la boucle car on a trouvé la dernière ligne vide ou coller la donnee
            End If
        Next c
    J'espère que c'est plus clair.

    Sinon, si tu utilise ce code, remet moi le code que tu as écrit avec ça, et je verrai ce qu eje peux faire avec en écrivant le code que tu as écrit
    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 !

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

Discussions similaires

  1. Comment tester qu'une ligne d'un Msflexgrid est vide
    Par bahboubacar2 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 27/03/2010, 12h36
  2. [VBA-E]comment trouver la dernière ligne contenan
    Par couscoussier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/03/2006, 16h53
  3. Réponses: 5
    Dernier message: 23/03/2006, 12h41
  4. Comment mettre invisible une LIGNE d'un DBGrid ???
    Par EssaiEncore dans le forum Composants VCL
    Réponses: 16
    Dernier message: 07/01/2006, 02h05
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56

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