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 :

Selectionner la première colonne vide entre 2 colonnes [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2018
    Messages : 15
    Par défaut Selectionner la première colonne vide entre 2 colonnes
    Bonjour à tous,

    Tout d'abord bonne année 2019

    Je suis en train de réaliser un petit projet VBA.
    J'ai un tableau qui consolide des données de plusieurs fichiers excel.
    Il y a une colonne avec le nom des références des produits en colonne A et une colonne avec le total des ventes en Z.

    Je n'arrive pas à coller les valeurs des différents fichiers dans la première colonne vide en B7 et Y7.

    Mon code copie les valeur après la colonne Z
    le code fonctionne bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks("Résultat consolidé 34.xlsm").Activate    'On revient sur le Classeur de synthèse
    LastCol = Cells(7, Columns.count.End(xlToLeft).Column + 1)
    Cells(7, LastCol).Select
    Mais quand je veux justement limiter le LastCol entre la celulle B et Y cela ne marche pas

    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LastCol = Cells(7, Range ("B7:Y7".End(xlToLeft).Column + 1)
    LastCol = Cells(7, Columns ("B7:Y"7).End(xlToLeft).Column + 1)
    Pouvez vous m'indiquer svp ce qui me manque dans ma logique pour exécuter de manière convenable mon code ?

    Merci d'avance,
    Cdt
    Student

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    si je prends à la lettre ce que tu dis vouloir (la première colonne vide de la ligne 7 entre la colonne B et la colonne Y), c'est celle de numéro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B7:Y7").End(xlToRight).Column + 1
    Attention : la première cellule vide d'une plage n'est pas forcément celle qui suit la dernière cellule remplie d'une plage

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2018
    Messages : 15
    Par défaut
    Bonjour Unparia,

    Merci pour ton retour rapide.

    Ton code ne fonctionne pas dans mon cas.

    Je l'ai adapté à mon modèle et cela donne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     LastCol = Range("B7:Y7").End(xlToLeft).Column + 1
               Cells(7, LastCol).Select

    Le problème c'est qu'à chaque fois que la boucle se fait sur l'un des 50 fichiers, elle recolle à chaque fois les valeur sur la même colonne.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Le problème c'est qu'à chaque fois que la boucle se fait sur l'un des 50 fichiers
    Quelle boucle ? (on ne voit pas son code).
    Il est bien évident, si tu boucles sur plusieurs classeurs en y examinant pour chacun la plage A7:Z7, que tu dois utiliser le code montré pour y déterminer la première cellule vide, pour chacun des fichiers ouverts !

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2018
    Messages : 15
    Par défaut
    Bonjour,

    Je vais décomposer le raisonnement afin que vous puissiez répondre à ma requête le plus efficacement possible.

    Par exemple, j'ai 10 fichiers sources qui ont la même structure.
    Pour chaque fichier je copie les valeurs C8 à C20.

    J'ai donc un code qui va ressembler à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    While Len(NomClasseur) > 0
        Application.DisplayAlerts = False   'On désactive les boites de message d'Excel
        Workbooks.Open NomClasseur          'On ouvre le classeur
        Range("C8:C20").Copy
        Workbooks("Résultat consolidé 34.xlsm").Activate    'On revient sur le Classeur de synthèse
        LastCol = Cells(7, Columns.count.End(xlToLeft).Column + 1
        Cells(7, LastCol).Select
        ActiveSheet.Paste  
        Workbooks(NomClasseur).Close    'On ferme le classeur source
        NomClasseur = Dir   'On passe au prochain fichier du dossier. 
    wend
    Maintenant, j'ai mon fichier de consolidation, j'aimerais coller les informations que j'ai copié (donc C8 à C20) sur chaque colonne entre C et Y de mon fichier de consolidation. Il faut donc que ma variable LastCol puisse se décaller à chaque fois d'1.

    Ce code répond partiellement à ma requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     LastCol = Cells(7, Columns.count.End(xlToLeft).Column + 1)
    En effet, au sein du fichier de consolidation, en colonne Z j'ai une colonne avec des informations, le code copie les fichiers dans le bon ordre mais à partir de la colonne Z.
    Moi j'ai besoin de spécifier ma variable LastCol comme étant le numéro de la colonne qui se situe sur la 7ieme ligne et sur la première colonne vide entre (C et Y), ainsi après le premier fichier la LastCol e sera D et ainsi de suite.

    Je vous remercie d'avance

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Moi j'ai besoin de spécifier ma variable LastCol comme étant le numéro de la colonne qui se situe sur la 7ieme ligne et sur la première colonne vide entre (C et Y), ainsi après le premier fichier la LastCol e sera D et ainsi de suite.
    ET ?
    Et je t'ai d'emblée donné le code permettant précisément la détermination de lastcol
    et je t'ai précisé ceci :
    Attention : la première cellule vide d'une plage n'est pas forcément celle qui suit la dernière cellule remplie d'une plage
    Je crois que l'un de nous deux souffre d'un problème d'expression.
    regarde ceci (où | sépare les colonnes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A | B | C | D | E
    x | x |   |x
    la première colonne vide (ton expression, donc) est ... la colonne C

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/05/2015, 15h51
  2. [XL-2007] Selectionner 1ère ligne vide + allez à 1ère colonne vide + Coller
    Par OlivB1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/10/2013, 15h48
  3. [XL-2003] Compter le nombre de sous-lignes non vides entre deux colonnes
    Par Augustine1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2012, 15h40
  4. [XL-2003] Sélectionner la première cellule vide de la première colonne
    Par ghostvb dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/06/2010, 18h56
  5. Réponses: 6
    Dernier message: 22/06/2010, 10h32

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