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 :

Macro pour Copier coller des colonnes a partir d'une référence sur une ligne [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 11
    Points
    11
    Par défaut Macro pour Copier coller des colonnes a partir d'une référence sur une ligne
    Bonjour !

    J'aurai besoin de votre aide encore une fois! (je progresse petit à petit mais je galère encore ! donc soyez gentil :p)

    J'élabore une matrice pour copier coller des valeurs d'une matrice d'une feuille (feuil1) vers une autre (Kit Hing Pin), a partir de référence à la ligne 10 de la feuille Kit Hinge Pin .

    Avec le document se sera plus clair : http://cjoint.com/?3Glj0R7OT8x

    Pour l'instant j'ai écris un bout de code. Mais en fait je suis perdue au niveau de la boucle !

    En effet il faudrait parcourir la ligne la ligne 10 de la feuille Kit puis à chaque cellule faire chercher son identique à la ligne 1 de la feuil1. Quand on trouve des correspondante on copie ce qu'il y a en dessous de la colonne (donc toute les valeurs) et on les colle dans la feuille Kit Hinge pin dans la colonne en dessous.

    J'espère avoir été claire et précise


    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
    Sub essaiun()
     
     
    'Initialisation variable
    Dim wsKITHINGEPIN As Worksheet
    Dim wsFeuil1 As Worksheet
    Dim derlig As Long
    Dim dercol As Long
    Dim cell As Range
    Dim NoCol As Integer
    Dim NoLig As Long
    Dim Var As Variant
     
        Application.ScreenUpdating = False
     
     
        Set wsKITHINGEPIN = ThisWorkbook.Worksheets("KIT HINGE PIN")
        Set wsFeuil1 = ThisWorkbook.Worksheets("Feuil1")
        derlig = wsCRNETCDE.Range("A" & Rows.Count).End(xlUp).Row
        dercol = wsCRNETCDE.Range("A" & Columns.Count).End(xlToRight).Column
     
     
    'Parcourir les colonnes
     
    NoLig = 1 'Lecture de la ligne 1
    For NoCol = 1 To Columns(Split(FL1.UsedRange.Address, "$")(3)).Column
            Var = FL1.Cells(NoLig, NoCol)
        Next
        Set FL1 = Nothing
     
     
    'copy colonne
     
        wsFeuil1.Range("" & derlig).Copy Destination:=wsKITHINGEPIN.Range("")
        wsFeuil1.Range("" & derlig).Copy Destination:=wsKITHINGEPIN.Range("")
     
    'cherche dans la feuille kit Hinge Pin
    'on colle a partir de la bonne ligne la colonne
     
    End Sub
    Voilà voilà,

    Merci d'avance de votre aide

  2. #2
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut Ton programme ne fait pas ce qu'il doit faire
    Bonjour,
    Je regarde ton programme et je suis un peu surpris. Tu utilises des variables dans ta boucle que tu ne réutilises pas après. (notamment la variable Var de type variant que tu mes à nothing sans reutiliser)
    le plus simple c'est de parcourir tout simplement ta ligne de premiere feuille et vérifier si une cellule correspond dans ta deuxieme feuille.
    Pour chacune tu peux ensuite copier tout le reste de la colonne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for i=10 to worksheets("Feuille KIT...").range("IV10").end(xltoright).row
        for j=2 to worksheets("Feuil1")..range("IV10").end(xltoright).row
     
        if cells(10,i)=cells(1,j) then
                 worksheets("Feuil1").range(cells(2,j),cells(800,j).copy
                 worksheets("Feuille KIT...").activate
                  cells(11,i).select
                  activesheet.paste
            end if
        next j
    next  i
    Merci de me dire si cela t as aide. N'oubli pas de mettre en resolu.

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tu peux ajouter des pièces jointes directement à partir de la page d'édition des questions; en n'oubliant pas de les ajouter uniquement quand c'est nécessaire.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    (désolé de répondre aussi tard). Et merci de vous être planché sur mon problème

    Comme de bien entendu: Merci de m'aider ! (je suis assez perdue sur ce genre problème héhé)

    J'ai réarrangé ce que vous avez proposez mais ça ne marche pas!

    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
    Sub essais()
     
    Dim i As Long
    Dim j As Long
     
    For i = 10 To Worksheets("KIT HINGE PIN").Range("IV10").End(xlToRight).Row
        For j = 2 To Worksheets("Feuil1").Range("IV10").End(xlToRight).Row
     
        If Cells(10, i) = Cells(1, j) Then
                 Worksheets("Feuil1").Range(Cells(2, j), Cells(800, j)).Copy
                 Worksheets("KIT HINGE PIN").Activate
                  Cells(11, i).Select
                  ActiveSheet.Paste
            End If
        Next j
    Next i
     
    End Sub
    Y a un problème sur la 7e ligne, j'arrive pas à comprendre pourquoi. En faisant le débogage pas à pas ils marquent "erreur d’exécution 1004, Erreur définie par l'application ou l'objet".

    Voilà, je vais continuer à chercher pour apprendre


    clementmarcotte: C'est vrai que c'est bien de rajouter seulement quand c'est utile mais je ne pensais pas être assez claire c'est pour cela que j'ai rajouté le fichier après cjoint c'est juste une question d'habitude.


    Merci encore de votre aide!

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par laurasoe Voir le message
    Bonjour,
    (désolé de répondre aussi tard). Et merci de vous être planché sur mon problème


    clementmarcotte: C'est vrai que c'est bien de rajouter seulement quand c'est utile mais je ne pensais pas être assez claire c'est pour cela que j'ai rajouté le fichier après cjoint c'est juste une question d'habitude.


    Merci encore de votre aide!
    C'était juste parce que l'on peut ajouter un fichier directement à partir de l'interface du forum.
    J'ai déjà entendu dire qu'il y avait des anti-virus qui considéraient cijoint comme un site dangereux et qui le bloquaient. Mais bon, la force de l'habitude...
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    Bonjour, je voudrai revenir sur ce problème car je ne l'ai toujours pas résolu:

    J'ai retravailler le code mais ça ne marche pas... Est-ce que vous pouvez m'aider s'il vous plaît ?

    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
    Sub essais()
     
    Dim FL1 As Worksheet, Cell As Range
    Dim FLKIT As Worksheet
     
    Dim i As Integer
    Dim j As Integer
     
    Dim dercol As Long
    Dim dercol2 As Long
     
     
        Set FL1 = Worksheets("Feuil1")
        Set FLKIT = Worksheets("KIT HINGE PIN")
    dercol = FL1.Range("B1").End(xlToRight).Column
    dercol2 = FLKIT.Range("AE10").End(xlToRight).Column
     
     
    For i = 2 To dercol
    For j = 10 To dercol2
     
     
    'On compare les cellules des deux feuilles
     
    If Cells(1, i) = Cells(10, j) Then
                FL1.Range("i2:i28").Copy 'on copie ligne 2 à 28 qui de la colonne i
                FLKIT.Activate
                FLKIT.Range("j13").Select
                Selection.Copy 'on colle ligne 13 de la colonne j
    End If
     
     
    Next j
    Next i
     
    End Sub
    Merci beaucoup

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 37
    Points : 11
    Points
    11
    Par défaut
    Bonjour, j'ai trouver une autre solution à mon problème, je la poste au cas ou ça pourrait être utile pour d'autres personnes:

    Au lieu d'utiliser une macro j'ai simplement mis des formules dans les cellules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU(AI$9=1;AI$9=2;AI$9=3);(1*AI$41)+AH$13;AH$13)
    C'est l'exemple d'une ligne.

    L'avantage c'est que ça se fait automatiquement . L'inconvénient est que si y a des changements de références va falloir tout changer à la mano !

    Bonne journée

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

Discussions similaires

  1. Code VBA pour copier-coller des colonnes d'un fichier Excel à un autre
    Par User Name dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2014, 23h30
  2. Pb de macro pour copier coller 100 fichier
    Par petit-ours dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/08/2011, 15h31
  3. [XL-2000] Macro pour copier-coller valeur avec un while
    Par golghot dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2010, 16h52
  4. [XL-2007] macro pour copier coller des selections multiples
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/06/2009, 12h31
  5. copier coller des colonnes dans le désordre
    Par sash6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2008, 18h24

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