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 :

Se placer sur une cellule avant l'execution d'une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 98
    Par défaut Se placer sur une cellule avant l'execution d'une macro
    Bonjour

    J'ai besoin de l'aide de personnes plus compétente que moi pour ma macro.
    Celle-ci doit me permettre de sélectionner un fichier Excel, de copier sont contenu et de la coller dans un autre fichier Excel.

    Alors j'arrive bien à faire le copier coller d'un fichier à un autre.
    Mais là ou je bloque, c'est que après la première exécution de ma macro, si j'ai d'autre fichiers dont je veux copier le contenu à la suite, je suis obligée avant de ré-executer la macro une deuxième fois de chercher la première cellule vide de la première ligne vide.

    Voila mon problème je n'arrive pas à me placer dans la première cellule vide de la première ligne vide.

    Je précise que dans mon tableau il ne peut pas y avoir de ligne vide. Donc la première ligne vide est forcement celle juste après mon tableau

    Voila 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub OuvrirCopierColler()
     
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim cdiscount As Workbook
    Dim FichCdiscount As Worksheet
    Dim Fichier As Variant
    Dim LigFin As Long
     
    Fichier = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx") 'permet d'ouvrir une boite de dialogue pour la selection du fichier
     
    Set wb = Workbooks.Open(Fichier)
    Set ws = wb.Worksheets(1)
    Set cdiscount = Workbooks("cdiscount.xlsm")
    Set FichCdiscount = cdiscount.Worksheets(1)
     
    'se placer sur la première ligne vide de la feuille
    Cells(FichCdiscount.Cells(1, 1).End(xlDown).Row + 1, 1).Select
     
    'copier la sélection du fichier donneur dans le fichier receveur
    ws.UsedRange.Copy 'copie dans le classeur donneur
    FichCdiscount.Paste 'colle dans le classeur receveur
    wb.Close 'ferme le classeur donneur
     
     
    End Sub
    Je sais que pour le moment ce code n'est pas trés opti, et que par la suite je devrais le couper en plusieurs fonctions pour pouvoir l'utiliser avec tous type de situations. Mais pour le moment je bloque sur cette sélection de première ligne vide.

    Qui peut m'aider svp?

    Elwy

  2. #2
    Membre averti
    Homme Profil pro
    Apprenti technicien en informatique
    Inscrit en
    Décembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Apprenti technicien en informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 23
    Par défaut
    Bonjour

    Voila le code pour déterminer la dernière cellule non vide de la colonne A. le +1 te positionne donc à la première cellule vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A65536").End(xlUp).Row + 1
    et sinon met ta variable fichier en String sa prendra moins de place en mémoire.

  3. #3
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 98
    Par défaut
    alors est ce que j'ai mal fait ou pas, mais le +1 moi il ne veut pas.
    ça m’enlève le +

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub OuvrirCopierColler()
     
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim cdiscount As Workbook
    Dim FichCdiscount As Worksheet
    Dim Fichier As Variant
    Dim LigFin As Long
     
    Fichier = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx") 'permet d'ouvrir une boite de dialogue pour la selection du fichier
     
    Set wb = Workbooks.Open(Fichier)
    Set ws = wb.Worksheets(1)
    Set cdiscount = Workbooks("cdiscount.xlsm")
    Set FichCdiscount = cdiscount.Worksheets(1)
     
    'se placer sur la première ligne vide de la feuille 'Range.("A65536").End((xlUp).Row+1
    FichCdiscount.Range("A65536").End(xlUp).Row 1
     
     
    'copier la sélection du fichier donneur dans le fichier receveur
    ws.UsedRange.Copy 'copie dans le classeur donneur
    FichCdiscount.Paste 'colle dans le classeur receveur
    wb.Close 'ferme le classeur donneur
     
     
    End Sub
    j'ai beau le remettre, des que je valide il disparait.

    et du coup j'ai une erreur de compilation

  4. #4
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Octobre 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2014
    Messages : 98
    Par défaut
    bon je viens de voir que ma ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichCdiscount.Range("A65536").End(xlUp).Row 1
    pose problème dans le sens ou elle est pas complète.

    Elle me retourne le num de la première ligne vide, ça ok.

    Mais moi je voudrais me placer dans la cellule A de cette ligne

    Donc j'ai trouvé ça:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Explicit
     
    Sub OuvrirCopierColler()
     
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim cdiscount As Workbook
    Dim FichCdiscount As Worksheet
    Dim Fichier As Variant
    Dim LigFin As Long
    Dim DerLig As Integer
     
    Fichier = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx") 'permet d'ouvrir une boite de dialogue pour la selection du fichier
     
    Set wb = Workbooks.Open(Fichier)
    Set ws = wb.Worksheets(1)
    Set cdiscount = Workbooks("cdiscount.xlsm")
    Set FichCdiscount = cdiscount.Worksheets(1)
     
    'se placer sur la première ligne vide de la feuille 'Range.("A65536").End((xlUp).Row+1
    'FichCdiscount.Range("A65536").End(xlUp).Row 1
    DerLig = FichCdiscount.Range("A65536").End(xlUp).Row + 1
    Range("A" & DerLig).Select
     
    'copier la sélection du fichier donneur dans le fichier receveur
    ws.UsedRange.Copy 'copie dans le classeur donneur
    FichCdiscount.Paste 'colle dans le classeur receveur
    wb.Close 'ferme le classeur donneur
     
     
    End Sub
    Seulement là ou je suis perdu, c'est que je vois partout d’écrit sur le fofo que le .Select est à éviter.

    Comment faire alors?

  5. #5
    Membre averti
    Homme Profil pro
    Apprenti technicien en informatique
    Inscrit en
    Décembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Apprenti technicien en informatique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 23
    Par défaut
    Désolé je ne peut pas t'aider plus que sa j'utilise la méthode select aussi ^^ essaie de voir si la fonction Match marche après je n'en suis pas trop sur.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    Ligne de code n°23 : la sélection est réalisée sur la feuille active du fichier qui vient d'être ouvert !
    Il suffit de juste activer la bonne feuille de calculs au préalable …

    Et puis rien qu'en lisant l'aide de la méthode Range.Copy en indiquant la Destination,
    en une seule ligne de code sans sélection …

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, …

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/10/2015, 18h20
  2. Réponses: 2
    Dernier message: 13/05/2014, 21h58
  3. Réponses: 4
    Dernier message: 13/09/2013, 16h04
  4. Réponses: 3
    Dernier message: 16/10/2007, 17h25
  5. Revenir sur la cellule sélectionné après exécution d'une macro
    Par Daniel-Gérald dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2007, 22h50

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