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 :

Copie/coller de données vers autre feuille d'un même classeur + fusion de cellule en fonction d'une variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut Copie/coller de données vers autre feuille d'un même classeur + fusion de cellule en fonction d'une variable
    Bonjour,

    Je réalise actuellement une macro pour automatiser la création d’une feuille de relevé de poids rempli manuellement par un opérateur sur le terrain.
    L’idée est d’extraire les données d’une feuille pour les transférer et les mettre en forme en fonction de la quantité réceptionnée du jour.

    La macro doit dans un premier temps transférer certaines des données d’une feuille appelée « Commandes » vers une autre feuille de relevé de poids appelée «Feuille ».
    La macro doit ensuite fusionner les cellules pour créer plusieurs lignes en fonction du nombre de palettes en colonne I de la feuille « Feuille »).

    J’ai fait le code pour la première colonne mais j’ai quelques soucis : quand je colle les données dans ma feuille de relevé la case sélectionné à la fin du collage n'est pas celle ou les données ont été collées - je ne peux donc pas enchainer mon code pour fusionner mes lignes en fonction de mon nombre de palettes.

    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 Copier()
     
        Dim numligne As String
        numligne = ActiveCell.Row
     
        Sheets("Commandes").Select
        Range("A" & numligne).Select
        Selection.Copy
     
        With Sheets("Feuille")
            ActiveSheet.Paste Destination:=.Range("A" & .Range("A" & Rows.Count).End(xlUp).Row).Offset(1)
        Application.CutCopyMode = False
        .Activate
        End With
     
        Range ("A" & numligne & .Range("A" & Range("I" & numligne-1)).Select)
        ' La macro plante ci dessus : 
        ' je souhaite sélectionner la case de mon activecell (point de départ) jusqu'à mon point arrivée activecell + valeur nombre de ligne présente en colonne I-1
     
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
        End With
     
     End Sub
    Ci joint une image du résulta attendu :

    Nom : Capture.PNG
Affichages : 2439
Taille : 28,8 Ko

    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour

    Sur la forme ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Range ("A" & numligne & .Range("A" & Range("I" & numligne)).Select)
        Range("A" & numligne & ":I" & numligne).Select
    Ca devrait améliorer

    Vous pourriez également passer par le CurrentRegion comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim SrcRng As Range, CopyRng As Range
     
    Set SrcRng = ThisWorkbook.Worksheets("Commandes").Range("A1").CurrentRegion
    Debug.Print SrcRng.Address
     
    Set SrcRng = SrcRng.Columns(1)
    Debug.Print SrcRng.Address
    Sur le fond, je me permets quelques commentaires ....
    - Ne jamais se mélanger le crayons avec la déclaration des variables: numligne As String par exemple, vous allez droit dans des codes difficiles avec des conversions à la pèle
    - Un TCD / Pivot devrait pouvoir le faire, peut-être, voir exemple non dégrossi en PJNom : Capture.JPG
Affichages : 2256
Taille : 110,2 Ko

    Bonne journée

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    Merci pour tes éléments de réponse vinc_bilb

    Tout d'abord pour le code, celui-ci ne rempli pas ma fonction car je cherche à gérer mon point de départ grâce à l'active.Cell de la valeur que je recopie et mon point d'arrivée grâce à la valeur de la cellule présente en I

    En gros ça pourrait donner ça de façon algorithmique "primaire" (je suis débutant en vba) :
    Range(A&ActiveCell.row:A&(ActiveCell.row+valeur de la case en I - 1)

    En ce qui concerne le TCD, il ne répond pas à mes besoins puisque je cherche à automatiser la mise en forme.
    Aujourd'hui, la personne fait des copier coller des données et ajoute des lignes "manuellement" comme dans ma photo en PJ plus haut pour créer les lignes qui lui manque.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Rebonjour,

    J'avais aussi corrigé votre code d'origine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Range ("A" & numligne & .Range("A" & Range("I" & numligne)).Select) 'Erreur
        Range("A" & numligne & ":I" & numligne).Select

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    Le code proposé permet de selecter la ligne de Ax à Ix
    Or dans mon cas, je souhaite sélecter la colonne de Ax à A(x+y-1) ou y est la valeur de la cellule Ix

    Malgrès une nuit (presque) complète à rechercher le bon code, je n'arrive toujours pas à mes fins.
    Je suis plutôt pugnace mais j'avoue que là je bloque complètement !
    Quelqu'un pourrais m"éclairer sur le sujet ?

    Merci beaucoup.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Je ne retrouve pas votre fichier d'origine,(pas Glop ), pouvez-vous le remettre SVP?
    Merci

Discussions similaires

  1. [OpenOffice][Tableur] récupérer données sur une autre feuille dans le même classeur
    Par papyalg dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 03/11/2014, 15h41
  2. [XL-2010] Copie automatique données vers autre feuille
    Par OliFossa dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 19/02/2012, 20h20
  3. Couper coller des lignes vers autre feuille
    Par CLAUDE19 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2012, 17h30
  4. Copier - coller des données entre 2 feuilles d'un même classeur
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/04/2009, 23h05
  5. Recherche dans une autre feuille de Excel même classeur
    Par kourria dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2007, 22h29

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