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 :

Importer des infos d'une feuille vers une autre


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Importer des infos d'une feuille vers une autre
    Jai besoin d'aide. Etant novice sur excel je me tourne vers vous.

    Mon problème :

    Lorsque je choisis le type de fournisseur (en D1) dans la feuille "foam fnr export" j'aimerais qu'il affiche tous les informations relatifs à ce fournisseur qui se trouve dans la feuille suivi livrables. Les colonnes Q,S,U et W de la feuille suivi livrables listent tous les fournisseurs. Je veux donc que la formule aille rechercher dans ces colonnes le fournisseur qui sera choisit sur la feuille "foam FNR export" et afficher les infos correspondant (à savoir program, ITCM, PDR, CDR etc) sur cette feuille.

    Merci d'avance.
    ci-joint le fichier
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Donne un exemple. On trouve le même fournisseur sur plusieurs colonnes et sur plusieurs lignes.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse.

    Voici un exemple:

    Pour chaque programme, nous avons un ou plusieurs fournisseurs de mousses (assise, dossier, têtière etc).
    Pour le programme EZ305 (A56) nous avons comme fournisseurs "supacor" (Q56) et "greiner"(S56, U56,w56)
    Pour le programme EZ306 (A57) le fournisseur est "greiner".
    Lorsque je choisis "greiner" dans la feuille "foam fnr export" en D5, les programmes ayant comme fournisseur "greiner" devront s'afficher sur la page ainsi que toutes les infos relatifs à ce programme (ITCM, CDR,PDR etc).. Dans mon exemple, les programmes EZ305 et EZ306 devront s'afficher. Si l'on choisit "supracor" comme fournisseur, seul le programme EZ305 s'affichera.

    J'espère que c'est plus clair.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Euh, j'ai peut-être la tête dure, mais dans ton exemple, pourquoi E305 et E306 et pas E308 et E309 ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Il n'y a pas de E308 ni de E309 dans la colonne A. Dans mon exemple, je considère que je n'ai que deux programmes dans la base de données ce qui n'est pas le cas. Dans ma base de données (feuille "suivi livrables") j'ai 87 programmes. Donc si je choisis FRANKLIN dans la feuille "foam fnr export", tous les programmes ou l'on a FRANKLIN comme fournisseur devront apparaitre sur la feuille
    "foam fnr export".

    Au fait, j'ai choisi le programme EZ305 dans mon exemple car on a deux fournisseurs différents pour un même programme.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Mets cette macro dans le module de la feuille. Je n'ai fait q'une recopie : ITCM. Tu n'as recopier la ligne en changeant les colonnes. La macro se déclenche automatiquement quand tu changes le nom en D1.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Ligne As Long, Plage As Range, C As Range
        Dim Tabl As Variant
        If Target.Address = "$D$1" And Target.Value <> "" Then
            With Sheets("Suivi livrables")
                Tabl = .Range("A7", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 121)
            End With
            With Sheets("Foams FNR export")
                Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
                For i = 1 To UBound(Tabl, 1)
                    If Tabl(i, 17) = .[D1] Or Tabl(i, 19) = .[D1] Or Tabl(i, 23) = .[D1] Then
                        Ligne = Ligne + 1
                        Tabl(i, 5) = .Cells(Ligne, 2)
                        'etc.
                    End If
                Next i
            End With
        End If
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #7
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse.

    Cependant, j'ai bien inséré le code dans le module de la feuille. Quand je choisis le nom du fournisseur en D1 il ne se passe rien. Je pense pourtant avoir inséré le code au bon endroit.
    voici le fichier.
    Fichiers attachés Fichiers attachés
    • Type de fichier : xls ex.xls (1,85 Mo, 51 affichages)

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Oups, désolé.

    Le calcul de la ligne est faux (maudites cellules fusionnées). Au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
    mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
                If Ligne = 4 Then Ligne = 6
    Au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tabl(i, 5) = .Cells(Ligne, 2)
    J'aurais dû mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(Ligne, 2)=Tabl(i, 5)
    etc. A toi de refaire le travail pour les autres lignes.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    C'est super!

    Mille mercis ça marche. Merci d'avoir consacré un peu de ton temps sur mon travail. Vraiment merci.
    une dernière question. Lorsque je choisis le fournisseur en D1, j'ai remarqué que le code s'arrête lorsqu'il rencontre la valeur #N/A dans une cellule.
    Est-ce normal?

  10. #10
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Quelle cellule, par exemple ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  11. #11
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    À la ligne 24 de la feuille suivi livrables, La valeur de ITCM est #N/A et le fournisseur correspondant est Franklin. Si on choisit Franklin comme fournisseur, la macro s'arrête quand il rencontre une valeur #N/A dans la colonne ITCM

  12. #12
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Actuellement, s'il y a #NA dans la cellule, je ne recopie rien. Si tu veux, je peux mettre #NA ou un autre libellé.

    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
    Private Sub Worksheet_change(ByVal Target As Range)
        Dim Ligne As Long, Plage As Range, C As Range
        Dim Tabl As Variant
        If Target.Address = "$D$1" And Target.Value <> "" Then
            Application.EnableEvents = False
            With Sheets("Suivi livrables")
                Tabl = .Range("A7", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 121)
            End With
            With Sheets("Foams FNR export")
                Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
                If Ligne = 4 Then Ligne = 6
                For i = 1 To UBound(Tabl, 1)
                    If Tabl(i, 17) = .[D1] Or Tabl(i, 19) = .[D1] Or Tabl(i, 21) = .[D1] Or Tabl(i, 23) = .[D1] Or Tabl(i, 25) = .[D1] Or Tabl(i, 28) = .[D1] Or Tabl(i, 31) = .[D1] Then
     
                        Ligne = Ligne + 1
                        If Not IsError(Tabl(i, 5)) Then .Cells(Ligne, 2) = Tabl(i, 5)
                        If Not IsError(Tabl(i, 6)) Then .Cells(Ligne, 3) = Tabl(i, 6)
                        If Not IsError(Tabl(i, 7)) Then .Cells(Ligne, 4) = Tabl(i, 7)
                        If Not IsError(Tabl(i, 8)) Then .Cells(Ligne, 5) = Tabl(i, 8)
                        If Not IsError(Tabl(i, 9)) Then .Cells(Ligne, 6) = Tabl(i, 9)
     
                        'etc.
    '                    Tabl(i, 6) = .Cells(Ligne, 3)
    '                    Tabl(i, 7) = .Cells(Ligne, 4)
    '                    Tabl(i, 8) = .Cells(Ligne, 5)
    '                    Tabl(i, 9) = .Cells(Ligne, 6)
    '                    Tabl(i, 10) = .Cells(Ligne, 7)
    '                    Tabl(i, 11) = .Cells(Ligne, 8)
    '                    Tabl(i, 77) = .Cells(Ligne, 9)
    '                    Tabl(i, 78) = .Cells(Ligne, 10)
    '                    Tabl(i, 79) = .Cells(Ligne, 11)
    '                    Tabl(i, 80) = .Cells(Ligne, 12)
    '                    Tabl(i, 81) = .Cells(Ligne, 13)
                    End If
                Next i
            End With
            Application.EnableEvents = True
        End If
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  13. #13
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Je t'en suis vraiment reconnaissant de prendre du temps pour moi.
    En fait, si tu choisis dans un premier temps le fournisseur Franklin, ça fonctionne très bien. Par contre, si tu choisis le fournisseur Greiner qui a moins de programme que Franklin, il va t'afficher les infos de greiner mais il conserve aussi les infos de franklin. Je pense qu'il faudrait que le code efface les infos précédentes dans d'afficher les nouvelles infos.

    PS : Dans le nouveau classeur ci joint, j'ai fait en sorte de ne plus avoir de N/A dans ma base de données.Exemple.xls

  14. #14
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Par contre, si tu choisis le fournisseur Greiner qui a moins de programme que Franklin, il va t'afficher les infos de greiner mais il conserve aussi les infos de franklin. Je pense qu'il faudrait que le code efface les infos précédentes dans d'afficher les nouvelles infos.
    J'ai cru que c'était ce que tu voulais. Utilise :

    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
    Private Sub Worksheet_change(ByVal Target As Range)
        Dim Ligne As Long, Plage As Range, C As Range
        Dim Tabl As Variant
        If Target.Address = "$D$1" And Target.Value <> "" Then
            Application.EnableEvents = False
            With Sheets("Suivi livrables")
                Tabl = .Range("A7", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 121)
            End With
            With Sheets("Foams FNR export")
                Ligne = 6
                .Range("B7", .Cells(.Rows.Count, 2).End(xlUp)).Offset(, -1).Resize(, 31).ClearContents
                For i = 1 To UBound(Tabl, 1)
                    If Tabl(i, 17) = .[D1] Or Tabl(i, 19) = .[D1] Or Tabl(i, 21) = .[D1] Or Tabl(i, 23) = .[D1] Or Tabl(i, 25) = .[D1] Or Tabl(i, 28) = .[D1] Or Tabl(i, 31) = .[D1] Then
     
                        Ligne = Ligne + 1
                    .Cells(Ligne, 2) = Tabl(i, 5)
                    .Cells(Ligne, 3) = Tabl(i, 6)
                    .Cells(Ligne, 4) = Tabl(i, 7)
                    .Cells(Ligne, 5) = Tabl(i, 8)
                     .Cells(Ligne, 6) = Tabl(i, 9)
                      .Cells(Ligne, 7) = Tabl(i, 10)
                       .Cells(Ligne, 8) = Tabl(i, 11)
                    End If
                Next i
            End With
            Application.EnableEvents = True
        End If
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  15. #15
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Désolé de la réponse tardive, problème de connexion. Lorsque j'insère le code, il marche bien au début. Mais par contre, lorsque je ferme le classeur que je l'ouvre de nouveau, lorsque je choisis le fournisseur, j'ai une petite fenêtre visual basic qui s'affiche et qui dit: Impossible de modifier une cellule fusionnée. Je te joins le fichier.
    Fichiers attachés Fichiers attachés

  16. #16
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Désolé, remplace la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("B7", .Cells(6, 2).End(xlUp)).Offset(, -1).Resize(, 31).ClearContents
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .[A7:AE65536].ClearContents
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  17. #17
    Candidat au Club
    Homme Profil pro
    ingénieur contruction aéronautique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : ingénieur contruction aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonjour Daniel

    Merci beaucoup. Tout marche comme je veux c'est super. J'espère qu'un jour j'aurai, comme toi, une très bonne maîtrise de vba.

    A bientôt

Discussions similaires

  1. Transférer une ligne d'une feuille vers une autre feuille
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/04/2012, 10h20
  2. Déplacer une image d'une feuille vers une autre dans un fichier Excel
    Par helenaide dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2011, 14h27
  3. [XL-2007] copier une ligne d'une feuille vers une autre feuille
    Par scarfunk dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/05/2010, 22h18
  4. Macro Copier données d'une feuille vers une feuille cible
    Par La Zélie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/09/2008, 10h01
  5. Importer des données de 250 feuilles vers une seule
    Par Bryan78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/04/2008, 16h18

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