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 :

Copier la dernière ligne (non vide) d'un fichier sur la première ligne vide d'un fichier d'un autre classeur [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Copier la dernière ligne (non vide) d'un fichier sur la première ligne vide d'un fichier d'un autre classeur
    Bonjour à Tous,

    Je me prends la tête depuis plusieurs semaines pour réussir à copier automatiquement la dernière ligne non vide d'un fichier sur la première ligne vide
    d'un autre fichier qui se situe sur un autre classeur. Mon problème : je laisse la possibilité à l'utilisateur de supprimer les données de son fichier (nommé saisie enregistrée) mais dès qu'il supprime les données cela supprime aussi le fichier de destination nommé lui aussi saisie enregistrée sur un autre classeur nommé destination.
    Ci dessous ma macro et en pièces jointes les 2 fichiers en question

    [S]
    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 tranfert_saisie()
    Sheets("Saisie enregistrée").Select
        ActiveSheet.Unprotect
        ActiveSheet.Unprotect
        Sheets("Saisie enregistrée").Select
    Dim tablo As Variant, derlig As Long
    'array representant le nom des cellule de la fiche de saisie dans l'ordre dans le quel elles seront transposées
    plage = Array("A3", "b3", "c3", "d3", "f3", "g3", "a6", "b6", "c6", "d6", "a11", "b11", "c11", "e11", "f11", "g11", "g11")
    ReDim tablo(1, UBound(plage)) ' redimentionnement d'une varaible de type tableau avec le nombre d'element dans l'array
    For i = 0 To UBound(plage)
    'inscription des données des cellules dans chaque items da la variable tableau
    tablo(0, i) = Sheets("Fiche de saisie").Range(plage(i))
    Next
    'recupération de la premiere ligne vide et libre de la feuille de destination
    derlig = Sheets("Saisie enregistrée").Range("A" & Rows.Count).End(xlUp).Row + 1
    'resize de la cellule A et derlig a la dimention du tableau et pose de du tablo
    Range("A" & derlig).Resize(1, UBound(plage)) = tablo
    Sheets("Saisie enregistrée").Select
    Dim wkDest As Workbook ' Classeur destinataire
    Set wkDest = Application.Workbooks.Open("M:\MANAGEMENT\Suivi des réclamations Laurent\Destination.xlsx")
    ThisWorkbook.Sheets("saisie enregistrée").Cells.Copy wkDest.Sheets("saisie enregistrée").Range("A1")
    derlig = Sheets("Saisie enregistrée").Range("A" & Rows.Count).End(xlUp).Row + 1
    wkDest.Close True 'Ferme en sauvant.
     
     
    End Sub
    Si vous avez des idées je serai aux anges......
    Merci dès maintenant pour votre aide précieuse

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici un exemple de copie de la dernière ligne remplie d'une liste de données se trouvant sur feuille nommée [db] et commençant en cellule A1 vers la première ligne vide de la liste de données se trouvant dans la feuille nommée [Feuil1]
    Procédure à adapter, les feuilles dans mon exemple n'étant pas protégées et se trouvent sur le même classeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Dim rngSource As Range, rngTarget As Range
     With ThisWorkbook
      Set rngSource = .Worksheets("db").Range("A1").CurrentRegion
      Set rngTarget = .Worksheets("Feuil1").Range("A1").CurrentRegion
     End With
     With rngSource
      .Rows(.Rows.Count).Copy rngTarget.Offset(1)
     End With
     Set rngSource = Nothing: rngTarget = Nothing
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juillet 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    merci beaucoup , je l'ai adapté avec succes

    un grand merci et a bientôt pour de nouvelles enigmes

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 12/09/2014, 15h02
  2. [shell_bash] grep uniquement sur la première ligne
    Par odysseus60 dans le forum Linux
    Réponses: 9
    Dernier message: 16/08/2010, 21h39
  3. Sed : Modifier le Nème caratères d'un fichier sur toutes les Lignes
    Par argoet dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 08/09/2009, 14h00
  4. Réponses: 13
    Dernier message: 11/11/2008, 13h45
  5. Ecrire sur la première ligne vide
    Par vanille972 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/08/2007, 09h30

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