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 :

VBA copier coller d'une selection avec variable [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut VBA copier coller d'une selection avec variable
    Bonjour,

    Etant débutant et n'ayant pas réussi à avancer depuis 2 jours je fais appel à vos talents:

    Je dois rapprocher deux types de données qui peuvent varier en nombre et que je regroupe par lot.
    Le lot1 par exemple serait composé de n individus qui possèdent chacun n objets
    Si le lot1 a 5 individus qui ont chacun 10 objets lot1, je souhaite mettre dans une autre feuille excel l'individu 1 du lot1 avec en dessous (+ insertion d'une ligne pour espacer) ses 10 objets lot1, puis l'individu 2 et en dessous les 10 objets lot1 etc...

    Même chose pour tous les autres lots d'individus et d'objets. Un individu aura forcément un objet en terme de numéro de lot.

    La première colonne = Lot individu, la 2ème = individu, la 3eme = lot objet, la 4ème = objet

    J'ai essayé de coder en utilisant un nombre si pour avoir le nbre d'individus et d'objets par lot, ce qui me permet d'envisager (je ne sais pas coder ça) un compteur n individus pour le nombre de fois ou je collerai le bloc de n objets (les lignes étant récupérés par le nb si pour faire une selection du bloc).

    J'imagine qu'il faudrait un code type For each range objet coller copier avec une boucle for next...Mais je bloque.

    Pouvez vous m'aider?
    Par avance, un grand merci!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Un TCD n'est-il pas suffisant ?

    Tu peux utiliser un filtre sur les individus pour les classer dans l'ordre et traiter cette liste ligne par ligne. Tu peux utiliser des collections, ...

    Tu peux passer par un des modules de classe (qui est très pratique pour ce genre de problème) mais je ne sais pas si tu maitrises le sujet...

    Mets ton fichier Excel en PJ et je t'aiderai.

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut,

    En fait après cette première étape, j'aurais d'autres travaux de mise en page et de retraitement excel d'ou la nécessité de passer par VBA et non par un TCD.

    Je te joins le fichier test..

    Merci!TEST.xlsx

    Cette version de fichier est plus explicite avec le résultat souhaité.

    TEST2.xlsx

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il a y sans doute plus simple mais ça fonctionne:
    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
    Option Explicit
     
    Public Sub Traitement()
     
      Dim lngLigne As Long
      Dim rngIndividu As Range, rngObject As Range
     
      Worksheets("resultat").Cells.ClearContents
      lngLigne = 1
     
      For Each rngIndividu In Range("individu").Rows
     
        If rngIndividu.Resize(1, 1).Value <> "" Then
     
          With Worksheets("resultat")
            .Cells(lngLigne, 1).Value = rngIndividu.Resize(1, 1).Value
            .Cells(lngLigne, 2).Value = rngIndividu.Offset(0, 1).Resize(1, 1).Value
            lngLigne = lngLigne + 2
            For Each rngObject In Range("object").Rows
              If rngObject.Resize(1, 1).Value = rngIndividu.Resize(1, 1).Value Then
                .Cells(lngLigne, 2).Value = rngObject.Resize(1, 1).Value
                .Cells(lngLigne, 3).Value = rngObject.Offset(0, 1).Resize(1, 1).Value
                lngLigne = lngLigne + 1
              End If
            Next rngObject
            lngLigne = lngLigne + 1
          End With
     
        End If
     
      Next rngIndividu
     
    End Sub
    Petit point de détail: j'utilise des plages nommées pour parcourir les cellules.

    Je t'ai mis un classeur en PJ.
    Dernière modification par Invité ; 20/10/2013 à 11h09.

  5. #5
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut cool
    Ca marche! Je vais prendre le temps de découvrir ton code, je pensais vraiment articuler ça autrement, mais si ça fonctionne alors je prends!

    Grand merci!

    Moof

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 08/12/2014, 08h32
  2. [XL-2010] en vba copier coller avec une condition dans des classeurs différents
    Par will83177 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/02/2014, 17h38
  3. [XL-2007] VBA Copier Coller vers cellules precises avec des ranges aleatoires
    Par thibault12500 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/12/2013, 16h47
  4. Réponses: 3
    Dernier message: 12/04/2013, 09h18
  5. [VBA] Pb avec Copier/coller d'une feuille Excel
    Par sebastien_oasis dans le forum Excel
    Réponses: 3
    Dernier message: 14/12/2007, 11h08

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