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 :

rechercher dans une ligne et copier la colonne dans un autre document


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut rechercher dans une ligne et copier la colonne dans un autre document
    Bonjour,

    j'aimerai faire une recherche dans une ligne lorsque le nom correspond à celui rechercher j'aimerai copier la colonne du tableau sur 15 lignes
    je pense avoir une partie du code mais le comprend pas comment copier la colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For Each celle In .[B408:I408]
                   If celle.Value = Choix Then
                    ???     .Copy Sh.[A217]
                     End If
                Next

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne sais pas où tu as récupéré ce code mais il semble plutôt... étrange.

    Déjà, pour commencer par réparer la syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each celle In Range[B408:I408]
         If celle.Value = Choix Then
              celle.Copy
              Col = celle.Column
              Range((celle.Row, celle.Column),(celle.Row, celle.Column+15)).PasteSpecial(xlPasteAll)
         End If
    Next celle
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    merci par contre ça me donne une erreur à la compilation!

    avec ce code comment puis-je copier la colonne sur ma feuille Sh en A218?

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par myayo001 Voir le message
    merci par contre ça me donne une erreur à la compilation!
    Comme ça, ça devrait aller mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(celle.Row+1, celle.Column),Cells(celle.Row+15, celle.Column)).PasteSpecial(xlPasteAll)
    Citation Envoyé par myayo001 Voir le message
    avec ce code comment puis-je copier la colonne sur ma feuille Sh en A218?
    Pour copier sur une autre feuille, il suffit de précéder le Range de la ligne contenant le PasteSpecial du nom de la feuille avec un Worksheets(Sh) (sans oublier de séparer par un point).

    Pour placer la copie sur l'autre feuille, il suffit de modifier le contenu du Range.
    Il contient deux objets Cells. Chacun donne les limites de la zone où copier les cellules sources.
    Chaque objets Cells contient deux éléments : un numéro de ligne et un numéro de colonne.

    Dans le code que j'ai donné, le numéro de colonne est celui de la cellule source : celle.Column
    Le numéro de ligne est celui de la cellule source (celle.Row) en ajoutant +1 (pour le début de la zone) ou +15 (pour la fin de la zone).
    Si tu veux les placer ailleurs dans ta feuille cible, il faut modifier ces valeurs.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    désolé mais je débute en vba
    ça devrait ressembler à quelque chose comme ça ou je me plante complètement?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         Worksheets(Sh).Cells(218, 2).Range(Cells(celle.Row + 1, celle.Column), Cells(celle.Row + 15, celle.Column)).PasteSpecial (xlPasteAll)

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Si ton onglet destination s'appelle "Sh" et s'il se trouve dans le même fichier que ta source, ça devrait s'appeler comme ça.

    Pour ce qui est du contenu des deux Cells, ça dépend des positions des cellules dans lesquelles tu veux copier tes données.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    en fait le tableau à copier se trouve bien dans le même fichier dans un autre onglet.
    et j'aimerai le copiera partir de la cellule B218

    le soucis est que j'ai une erreur d'execution '13' incompatibilité de type

    voici mes déclarations

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Choix As Variant, Sh As Worksheet, Deb As Long, Ligne As Long, celle As Range
        Set Sh = Sheets("résumé concession")

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Si Sh est de type Worksheet, ton code doit être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Cells(218, 2).Range(Cells(celle.Row + 1, celle.Column), Cells(celle.Row + 15, celle.Column)).PasteSpecial (xlPasteAll)
    Si tu veux utiliser le code avec Worksheet(Sh), il faut que Sh soit de type Sting (texte) et que tu la renseigne en ajoutant Name.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Sh As String
    Sh = Sheets("résumé concession").Name
    Mais, si Sh est de type String, il serait plus simple d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Sh As String
    Sh = "résumé concession"
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    en fait je l’utile plus haut en tend que type Worksheet

    je viens de tester plus d'erreur en exécution par contre dans la feuille Sh il me copie que le titre sur toute les ligne I626:I640

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Excuse-moi, j'ai recopier ton code sans le regarder. Je n'avais pas vu que tu avais fait une modification inappropriée.
    Le bon code serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sh.Range(Cells(celle.Row + 1, celle.Column), Cells(celle.Row + 15, celle.Column)).PasteSpecial (xlPasteAll)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    désole mais il me copie toujours 15 fois le titre de la colonne mais maintenant en H409 sur 15 lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each celle In .[B408:I408]
                    If celle.Value = Choix Then
                        celle.Copy
                        col = celle.Column
                        Sh.Range(Cells(celle.Row + 1, celle.Column), Cells(celle.Row + 15, celle.Column)).PasteSpecial (xlPasteAll)
                    End If
                Next celle
    ce code veut bien dire:

    pour toute les cellules comprise en B408:I408
    si une des cellule est égale à Choix alors
    je copie le numero de cellule
    col = celle.column (je peux la supprimer cette ligne puisqu'on ne l'utilise nul part notre affectation a col )
    je copie sur la feuille Sh la plage de données(numéro de ligne +1 ,numero de colonne) jusqu'à (numéro de ligne +15, numéro de colonne) ce qui donne par exemple B409:423 ?

    par contre à aucun endroit il est mis que je souhaite copier cette plage en cellule B218
    et pourquoi il me recopie que la cellule de la ligne 408 sur toutes les autres lignes?


    j'essaie de comprendre et de me former en même temps

  12. #12
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Si j'ai bien compris ton besoin (ce qui n'est pas facile étant donné ta façon de le décrire), ceci devrait faire ce que tu souhaites

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each celle In .[B408:I408]
          If celle.Value = Choix Then
                Range(Cells(celle.Row + 1, celle.Column), Cells(celle.Row + 15, celle.Column)).Copy
                Sh.Range(Cells(celle.Row + 1, celle.Column), Cells(celle.Row + 15, celle.Column)).PasteSpecial (xlPasteAll)
          End If
    Next celle
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. rechercher une date et copier la colonne dans un autre onglet
    Par jd69001 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2012, 20h09
  2. Selectionner des colonnes dans une ligne pour le copier
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/05/2009, 17h00
  3. Réponses: 8
    Dernier message: 17/03/2008, 20h44
  4. Réponses: 1
    Dernier message: 06/10/2007, 14h59
  5. Regrouper des colonnes dans une ligne
    Par aturlan dans le forum Access
    Réponses: 1
    Dernier message: 11/01/2006, 21h05

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