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 colle par etape


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut copier colle par etape
    bonjour a tous
    j'ai un soucie pour un copier coller d'info entre 2 fichier

    j'ai un fichier "COMMANDE" feuille "prepafact" et un fichier "caisse" feuille "operation de tresorerie"

    ce que j'essaie de faire c'est de copier certains éléments du fichier COMMANDE vers caisse

    donc :
    "COMMANDE" colone a vers "caisse" colone a
    "COMMANDE" colone b vers "caisse" colone b
    "COMMANDE" colone n vers "caisse" colone c et h

    les éléments à transférer du fichier COMMANDE commence à partir de la ligne 2, le fin varie

    Sur le fichier caisse, la colone a et b ont une valeur dans les cellules, donc on peux demarer la copie la cellule en dessous de la dernière cellule de la colone a qui comporte une valeur
    Ce qui n'est pas le cas de la colone c et h (d'ou la raison qui m'amene ici car je rame a cause de ça)

    merci pour votre aide

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Citation Envoyé par bosk1000 Voir le message
    Sur le fichier caisse, la colone a et b ont une valeur dans les cellules, donc on peux demarer la copie la cellule en dessous de la dernière cellule de la colone a qui comporte une valeur
    Ce qui n'est pas le cas de la colone c et h (d'ou la raison qui m'amene ici car je rame a cause de ça)

    il doit manquer quelque mots
    Mais on vas essayer de comprendre

    Tu copies après la dernière cellule ou tu colle après la dernière cellule?

    si tu n'as pas de valeur en c et h il suffit de coller a partir de la première ligne non?
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if isempty(cells(1,3)) then
    'tu colles a partir de la première ligne
    else 
    'tu colle a partir de la première ligne vide comme tu semble savoir le faire
    endif
    ps : Un morceau de code ca aide bien pour répondre au question

  3. #3
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    merci pour ton aide

    je copie les valeurs

    pour le code je peux te donner celui que j'ai fait, mais il est bonc que pour la colone a et b, gace à la fonction ".End(xlUp).Select" je peux aller a chque fin de tableaux, mais pour les 2 autres ce n'est pas valable

    voici le 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
                                                ' OPERATION SUR LE FICHIER CAISSE
                                                    'onglet operation de tresorerie
     
          Sheets("operation de tresorerie").Activate
              Windows("COMMANDE.xls").Activate
           numdl = Range("a65536").End(xlUp).Row 'recuper le numero de la dernière ligne du tableau
        For i = 2 To numdl ' pour donner la ligne pour demarer la fonction
           Windows("COMMANDE.xls").Activate
                Range("a" & i).Select ' pour activer la formule sur la ligne les une après les autres
            Selection.Copy
                Windows("caisse.xls").Activate
                 Range("a65536").End(xlUp).Select ' pour allez a la dernière ligne de la colone b
                    ActiveCell.Offset(1, 0).Select 'descent d'une ligne
                        ActiveSheet.Paste
        Next i
     
     
      Windows("COMMANDE.xls").Activate
           numdl = Range("a65536").End(xlUp).Row 'recuper le numero de la dernière ligne du tableau
        For i = 2 To numdl ' pour donner la ligne pour demarer la fonction
             Windows("COMMANDE.xls").Activate
     
            Range("b" & i).Select ' pour activer la formule sur la ligne les une après les autres
            Selection.Copy
                Windows("caisse.xls").Activate
                 Range("b65536").End(xlUp).Select ' pour allez a la dernière ligne de la colone b
                    ActiveCell.Offset(1, 0).Select 'descent d'une ligne
                        ActiveSheet.Paste
        Next i
     
             Windows("COMMANDE.xls").Activate
           numdl = Range("a65536").End(xlUp).Row 'recuper le numero de la dernière ligne du tableau
        For i = 2 To numdl ' pour donner la ligne pour demarer la fonction
            Windows("COMMANDE.xls").Activate
        Range("n" & i).Select ' pour activer la formule sur la ligne les une après les autres
            Selection.Copy
                Windows("caisse.xls").Activate
                 Range("C65536").End(xlUp).Select ' pour allez a la dernière ligne de la colone b
                    ActiveCell.Offset(1, 0).Select 'descent d'une ligne
                        ActiveSheet.Paste
                             ActiveCell.Offset(0, 5).Select
                                 ActiveSheet.Paste
           Next i
     
            numdl = Range("a65536").End(xlUp).Row 'recuper le numero de la dernière ligne du tableau
          For i = 2 To numdl ' pour donner la ligne pour demarer la fonction
          Range("t" & i).Select ' pour activer la formule sur la ligne les une après les autres
          If ActiveCell.Value = "" Then ActiveCell.Value = Date
            Next i
     
    End Sub
    donc je ne sais pas comment faire pour remplir la colone c et n a partir de la meme ligne que a et b, sachant qu'il y a un nombre indeterminé de ligne qui vide entre la dernière valeur en c et les nouvelle que je doit mettre

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Tu veux utiliser la même ligne ppour la colonne C que pour la collonne A?
    Ben utilise
    Range("a65536").End(xlUp).Row
    plus précisément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cells(Range("a65536").End(xlUp).Row +1,3).select
    ActiveSheet.Paste
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Range("C65536").End(xlUp).Select ' pour allez a la dernière ligne de la colone b
                    ActiveCell.Offset(1, 0).Select 'descent d'une ligne
                        ActiveSheet.Paste
    une remarque en règle générale les .select sont a éviter
    Je te laisse voir comment faire

  5. #5
    Membre éclairé Avatar de bosk1000
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    706
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 706
    Par défaut
    bonjour, désolé de ne pas t'avoir répondu plus tôt

    OK, ton code est bon si je modifie l'ordre de mon copier coller en ne démarrant
    pas le collage sur la colonne a

    sinon grâce a ton mail, ça m'a donnée une autre idée de code

    c'est non plus de coller d'abord chaque colonne les une après les autres, mais de finir chaque ligne
    voici ce que ça donne

    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
    32
    33
    34
    35
    36
     
     Sheets("operation de tresorerie").Activate
              Windows("COMMANDE.xls").Activate
           numdl = Range("a65536").End(xlUp).Row 'recuper le numero de la dernière ligne du tableau
        For i = 2 To numdl ' pour donner la ligne pour demarer la fonction
           Windows("COMMANDE.xls").Activate
                Range("a" & i).Select ' pour activer la formule sur la ligne les une après les autres
            Selection.Copy
                Windows("caisse.xls").Activate
                 Range("a65536").End(xlUp).Select ' pour allez a la dernière ligne de la colone b
                    ActiveCell.Offset(1, 0).Select 'descent d'une ligne
                        ActiveSheet.Paste
     
                 Windows("COMMANDE.xls").Activate
            ActiveCell.Offset(0, 1).Select 'descent d'une ligne
              Selection.Copy
               Windows("caisse.xls").Activate
            ActiveCell.Offset(0, 1).Select 'descent d'une ligne
                         ActiveSheet.Paste
     
            Windows("COMMANDE.xls").Activate
            ActiveCell.Offset(0, 12).Select 'descent d'une ligne
               Selection.Copy
               Windows("caisse.xls").Activate
            ActiveCell.Offset(0, 1).Select 'descent d'une ligne
                         ActiveSheet.Paste
             ActiveCell.Offset(0, 5).Select
                                 ActiveSheet.Paste
           Next i
     
            numdl = Range("a65536").End(xlUp).Row 'recuper le numero de la dernière ligne du tableau
          For i = 2 To numdl ' pour donner la ligne pour demarer la fonction
          Range("t" & i).Select ' pour activer la formule sur la ligne les une après les autres
          If ActiveCell.Value = "" Then ActiveCell.Value = Date
            Next i
       End Sub
    merci pour tes idées

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

Discussions similaires

  1. Réponses: 62
    Dernier message: 05/07/2006, 13h48
  2. Insertion par étape dans une base
    Par dunbar dans le forum Requêtes
    Réponses: 14
    Dernier message: 29/06/2006, 15h50
  3. Réponses: 10
    Dernier message: 19/06/2006, 19h04
  4. Comment faire Copier/Coller par code VBA sur INTERNET...
    Par GESCOM2000 dans le forum Access
    Réponses: 5
    Dernier message: 02/01/2006, 13h19
  5. Réponses: 5
    Dernier message: 09/09/2005, 11h24

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