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] Copier une séléction de valeur jusqu'à la prochaine cellule non vide


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut [VBA-E] Copier une séléction de valeur jusqu'à la prochaine cellule non vide
    Bonjour,
    J'ai deux feuilles Excel. Une vide que je souhaite remplir(Remplissage) et une (60601) avec les données à sélectionner.
    Je sélectionne ma première ligne à copier et je voudrai que la sélection continue dans que chaque ligne du dessous n'est pas vide.

    Comment faire (via une boucle peut être?)...?

    Voici le début de mon 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
    Sub Macro1()
     
    Sheets("60601").Select
    Range("B7").Select
    Rows(7).Select
     
    '-> comment continuer ma séléction tant que la ligne du dessous n'est pas vide?
     
    Selection.Copy
    Sheets("Remplissage").Select
    Range("A2").Select
    ActiveSheet.Paste
     
    End Sub

  2. #2
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    sous Excel, sélectionne la première cellule, puis fais Fin + Flèche du bas.
    Cela te sélectionne la dernière cellule non-vide de la plage de cellule.
    Regarde ce que ça fait en VBA en enregistrant une macro et tu devrais t'en sortir (avec une boucle For par exemple).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Alors cela descend bien jusqu'à la dernière ligne non vide mais cela ne sélectionne pas les lignes du dessus ... :/

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Bonjour,


    Sélectionner une plage de la première à la dernière cellule non-vide d'une colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1", Range("A1").End(xlDown)).Select
    Range(ActiveCell, ActiveCell.End(xlDown)).Select
    Cela vas peut être t'aider.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Merci Louis !!!
    Oui cela est beaucoup mieux car il sélectionne bien toutes les cellules non vides de la premières colonnes ! =) !!
    Seulement il manque les cellules des colonnes à côtés... :/

    J'ai modifié mon code comme suit mais ça ne marche pas... As-tu une idée?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("60601").Select
    Range("B7:R7").Select
    Range("B7:R7", Range("B7:R7").End(xlDown)).Select
    Range(ActiveCell, ActiveCell.End(xlDown)).Select

  6. #6
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    Oui effectivement je ne t'ai pas précisé la sélection du Range, je pensais que tu le déduirais par toi-même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets("60601").Select
    Range("B7:R7").Select
    Range("B7:R7", Range("B7:R7").End(xlDown)).Select
    Range(ActiveCell, ActiveCell.End(xlDown)).Select
    J'ai mis ton erreur en gras. En effet, Range prend deux cellules en arguments. Or, "B7:R7" et Range("B7:R7")
    Il vaut mieux écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range(Range("B7"), Range("R7").End(xlDown)).Select

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("60601").Select
    Range("B7:R7").Select  'Sa Sert à quelque chose sa?
    Range("B7:R7", Range("B7:R7").End(xlDown)).Select
    Range(ActiveCell, ActiveCell.End(xlDown)).Select
    Déjà tu sélectionne 2 fois B7:R7 (cf commentaire du code en haut)

    Après je sais pas trop pour plusieurs collones, la solution facile c'est de faire collone par collone (huhu) mais sa doit être faisable plus simplement.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut Mais euh....
    J'ai essayé les deux solutions mais il ne séléctionne toujours que la première colonne B7 et pas jusqu'à R7

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut code
    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
     
    Sheets("60601").Select
    Range("B7:R7", Range("B7:R7").End(xlDown)).Select
    Range(ActiveCell, ActiveCell.End(xlDown)).Select
     
    Selection.Copy Destination:=Sheets("remplissage").Range("A2")
    End Sub

  10. #10
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    je ne comprend pas ce que tu veux exactement

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    En fait je voudrai qu'il sélectionne les éléments entre B7 et R7 ainsi que tous ceux dans les lignes du dessous (tant que les lignes ne sont pas vides).
    Cela marche à moitié car pour le moment avec ce code il ne sélectionne bien que les éléments de la colonne B à partir de B7...

  12. #12
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    Bon, enregistre une macro, place toi en B7, fais Shift +Fin + Flèche Droite, puis Shift + Fin + Flèche Bas. Stoppe l'enregistrement.
    Qu'obtiens-tu (sur Excel et en VBA) ?
    Chez moi ça marche...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Voilà le résultat =)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("B7").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlDown)).Select
    C'est beaucoup mieux =) !!!
    Une dernière question:
    Si entre B7 et R7 il y a une colonne vide (exemple J7) mais que je veux quand même sélectionner tout jusqu'à R7 tu sais comment on fait?

    En tout cas génial pour la réponse !!

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    J'ai fait comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Range("B7:R7").Select
        Range(Selection, Selection.End(xlDown)).Select
    Ca marche c'est génial !!!

    Merci beaucoup pour ton aide !!!

  15. #15
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    bien joué

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Merci =) !!!

    Je continue maintenant je suis lancée sur la dernière étape ...
    "Grâce à" la résolution du premier problème, j'ai un nouveau soucis en VBA sur ces mêmes fichiers hum...

    Voilà plusieurs tableaux identiques (mais avec des données différentes) sur plusieurs feuilles.
    Je dois récupérer toutes ces données et les poster sur un unique tableau.
    Voici le code vu jusqu'ici pour récupérer les données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    Sheets("60601").Select
    Range("B7:R7").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy Destination:=Sheets("remplissage").Range("B2")
    End Sub
    Je voudrai insérer un code qui permette d'aller récupérer les données des autres sheets (ex: 66666), de repérer la prochaine ligne vide du tableau sur "remplissage" et de les coller...

    Je pense qu'il faut faire une boucle avec le nom des feuilles d'où je prends mes données mais je ne vois pas du tout comment... :/

  17. #17
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    On peut très bien se passer des "Select" et simplifier le code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim x As Long
     
    x = Sheets("60601").Range("R" & Rows.Count).End(xlUp).Row '<-- trouve la dernière ligne utilisée de la colonne R
     
    Sheets("60601").Range("B7:R" & x).Copy Sheets("remplissage").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
     
    End Sub

  18. #18
    Nouveau membre du Club
    Femme Profil pro
    chargée d'études statistiques
    Inscrit en
    Juillet 2018
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : chargée d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2018
    Messages : 79
    Points : 36
    Points
    36
    Par défaut Copier une plage de formules dans la première colonne vide
    Bonjour,
    Complètement novice, je souhaite créer une macro me permettant de copier une plage de formules dans la première colonne vide de mon tableau et qu'il fasse cet action toutes les semaines en se décalant d'une semaine à chaque fois (Colonne vide) et pour corser le tout, qu'il me recolle en valeurs la plage sélectionnée.
    Voici le code de macro automatique:
    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
    Sub Macro2()
     
        Range("F8").Select
        Range(Selection, Selection.End(xlToRight)).Select
        ActiveWindow.SmallScroll ToRight:=3
        Range("AM8:AM215").Select
        Selection.Copy
     
        Range("AN8").Select
        Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Range("AM8").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    End Sub
    Merci pour votre aide !!!

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/02/2021, 18h34
  2. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 12h51
  3. [XL-2007] Etirer une formule qui affiche la prochaine cellule non-vide
    Par garulf0 dans le forum Excel
    Réponses: 2
    Dernier message: 25/06/2014, 20h21
  4. [VBA-E] Copier valeur jusqu'à la prochaine cellule non vide
    Par desdenova dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/02/2008, 11h22
  5. [VBA-E] Copier une formule de calcul dans toute la ligne
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2005, 18h18

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