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

Excel Discussion :

Faire monter des lignes d'un fichier excel dans un autre fichier excel


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    analyste commercial
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : analyste commercial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut Faire monter des lignes d'un fichier excel dans un autre fichier excel
    Bonjour,


    Je ne suis pas informaticien ni même dans le milieu, mais comme beaucoup je suis utilisateur ! j'ai des bonnes bases pour ce qui est des "bidouilles" faciles mais pour les fonctionnalités approfondies ca dépasse mes compétences.

    Mon besoin est le suivant:

    Je dispose d'un fichier excel "database", dans la première colonne "A" il y a des codes (tous différents) et dans les cases suivantes (sur chaque lignes) il y a des information et annotations.

    Dans un autre fichier excel j'ai besoin de recopier certaines de ces lignes, actuellement je procède par un "ctrl+f" je tappe le code, je surligne la ligne, "ctrl+C" et enfin "ctrl+V" dans le fichier final ... pas très rapide ni pratique quand il faut reprendre une centaines de lignes.

    Est-il possible alors de seulement lister les codes dans la colonne "A" de mon excel de destination, et que la ligne correspondante à ces codes dans l'excel "database" se copie dans mon excel de destination .

    Je suis incapable de creer des macros ou autre lignes de programmation, si vous pouvez m'aiguiller ca serait vraiment top !

    Merci beaucoup,

    Laurent

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  3. #3
    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 laurent74100 Voir le message
    Je suis incapable de creer des macros ou autre lignes de programmation, si vous pouvez m'aiguiller ca serait vraiment top !
    Comme l'a judicieuse signaler Kiki (que je salue), cette incapacité n'a rien d'incurable. Tous ceux qui développent en VBA, même les meilleurs, ont été, à une époque, incompétents dans ce domaine. Il ne tient donc qu'à toi d'y remédier.

    Une fois que tu auras consulté les documents qui te sont proposés et que tu auras acquis quelques bases, je te conseille la méthode suivante.

    Faire une boucle "For to" pour scruter toutes les lignes de ton fichier destination, en limitant la série avec la propriété End de Range.
    Pour chaque ligne, tu utilises la référence dans la colonne A de ton fichier destination pour faire une recherche dans ton fichier source avec la méthode Find.
    Après avoir vérifié que la recherche a été fructueuse avec un test If et une comparaison de type Not Is Nothing, tu peux utiliser le numéro de ligne de la cellule trouvée pour transférer les données.
    https://msdn.microsoft.com/fr-fr/lib.../gg251601.aspx
    https://msdn.microsoft.com/fr-fr/lib.../ff839539.aspx
    https://msdn.microsoft.com/fr-fr/lib.../ff839746.aspx
    https://msdn.microsoft.com/fr-fr/lib.../gg251599.aspx
    https://msdn.microsoft.com/fr-fr/lib.../gg264396.aspx
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    analyste commercial
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : analyste commercial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Ah oui, alors par contre même si je suis conscient que tout s'apprend et que je partage à 100% ce point de vue, je vais par contre pas pouvoir apprendre le mandarin en 2 jours
    Je n'aie et n'aurais surement pas d'autre occasion de refaire par la suite ce genre de manip de création dans le futur!

    J'ai tenté un enregistrement de macros, qui fonctionne, mais malheureusement que pour le code (valeur dans la case) que j'ai selectioné pendant l'enregistrement.
    Donc que je selectionne la case suivante et que je fais "application de la macro" ca me refait l'action sur la ligne de départ avec les infos de départ, ce qui est normal à la vue du code:

    Sub aaaaa()
    '
    ' aaaaa Macro
    '

    '
    Sheets("Sheet2").Select
    Range("A4").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Cells.Find(What:="2", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate
    Range("A55").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A4").Select
    ActiveSheet.Paste
    Range("A5").Select
    End Sub


    A ce que j'en comprends, j'aimerai que "2" ne soit pas la valeur de recherche mais que n'importe quelle valeur qui se trouve dans la case "A4" que j'ai selectioné soit la valeur de recherche.
    Ensuite que : Range("A55").Select (qui est la ou la valeur "2" se trouve dans ma sheet 1) soit par défaut les cases selectionées en fonction du résultat de la recherche (et non pas à chaque fois A55)

    J'ai bien tenté de remplacer "2" par "Value" mais ca marche pas évidement (je vous imagine en train de rire derrière votre écran )

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    analyste commercial
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : analyste commercial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Bon j'essaye autre chose:

    Sub testcolllage()
    Dim CompareRange As Variant, x As Variant, y As Variant
    ' Set CompareRange equal to the range to which you will
    ' compare the selection.
    Set CompareRange = Worksheets("Sheet1").Range("A1:A400")
    ' NOTE: If the compare range is located on another workbook
    ' or worksheet, use the following syntax.
    ' Set CompareRange = Workbooks("Book2"). _
    ' Worksheets("Sheet2").Range("C1:C400")
    ' Loop through each cell in the selection and compare it to
    ' each cell in CompareRange.
    For Each x In Selection
    For Each y In CompareRange
    If x = y Then x.Offset(0, 1) = x
    Next y
    Next x
    End Sub

    Ca me permet de comparer les valeurs dans les cases sélectionées (selectionées dans la colonne A feuille 2) et dans la colonne B Feuille 2 à la ligne correspondante, la valeur est recopiée si elle se trouve dans la colonne A feuille 1 .

    Il me faudrait un coup de pouce pour que les cases qui suivent la valeur dans la feuille 1 soit reportée aussi reportée dans la feuille 2 (sur la même ligne que la valeur)

    J'ai pas la syntaxe du programmeur ! Désolé !


    Merci

  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
    Citation Envoyé par laurent74100 Voir le message
    Il me faudrait un coup de pouce pour que les cases qui suivent la valeur dans la feuille 1 soit reportée aussi reportée dans la feuille 2 (sur la même ligne que la valeur)
    Déjà, commence par remplacer tous les Variant de la ligne Dim par des Range, ce sera un peu plus propre.

    Ensuite, regarde la propriété Offset de Range dans l'aide VBA.
    https://msdn.microsoft.com/fr-fr/lib.../ff840060.aspx
    et la structure d'un test If (voir mon message précédent).

    Petite remarque : personnellement, à la place d'une seconde boucle For Next, j'aurais mis une recherche Find, plus simple et plus rapide.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    analyste commercial
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : analyste commercial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Malgré tes conseils et avoir lu objet plage, if then, range copy, methode range fill right etc ... je n'arrive pas a mes fins !

    J'en suis la :

    Sub Find_Matches()
    Dim CompareRange As Variant, x As Variant, y As Variant
    ' Set CompareRange equal to the range to which you will
    ' compare the selection.
    Set CompareRange = Worksheets("Sheet1").Range("A1:A400")
    ' NOTE: If the compare range is located on another workbook
    ' or worksheet, use the following syntax.
    ' Set CompareRange = Workbooks("Book2"). _
    ' Worksheets("Sheet2").Range("C1:C400")
    '
    ' Loop through each cell in the selection and compare it to
    ' each cell in CompareRange.
    For Each x In Selection
    For Each y In CompareRange
    If x = y Then x.Range("A1:E1") = y
    Next y
    Next x
    End Sub

    Alors ca me copie sur la ligne de la valeur x de A à E la valeur y ! Je suis content car je sais comment désigner les case que je veux remplir !
    Mais je n'arrive pas à les remplir avec les cases sources que je veux !

    Je pensais y arriver avec ca:

    Sub Find_Matches()
    Dim CompareRange As Variant, x As Variant, y As Variant
    ' Set CompareRange equal to the range to which you will
    ' compare the selection.
    Set CompareRange = Worksheets("Sheet1").Range("A1:A400")
    ' NOTE: If the compare range is located on another workbook
    ' or worksheet, use the following syntax.
    ' Set CompareRange = Workbooks("Book2"). _
    ' Worksheets("Sheet2").Range("C1:C400")
    '
    ' Loop through each cell in the selection and compare it to
    ' each cell in CompareRange.
    For Each x In Selection
    For Each y In CompareRange
    If x = y Then x.Range("B1:E1") = y.Range("B1:E1")
    Next y
    Next x
    End Sub

    Mais cela ne copie rien dans les cases désignées. Le problème c'est qu'il se passe qqch mais je ne sais pas quoi ! car si avant de lancer la macro je rentre des chiffres ou lettres dans les cases B1,C1,D1,E1 qui devrait être normalement remplacer par le resultat de ma macro, les chiffres ou lettres disparaissent !

    HELP !

    Merci

    (Menhir, pour tes conseils sur le type de recherche Find etc, je te crois sur paroles, mais je comprend rien a la programation et les langages de macros, donc d'ici a ce que je customise cette macro pour qu'elle soit plus simple et plus rapide j'aurais des cheveux blancs !)

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/11/2015, 10h11
  2. Supprimé des lignes d'un fichier contenu dans un autre fichier
    Par nekcorp dans le forum Général Python
    Réponses: 12
    Dernier message: 05/05/2014, 21h27
  3. Réponses: 12
    Dernier message: 22/03/2010, 14h07
  4. Réponses: 5
    Dernier message: 24/02/2009, 09h05
  5. Copier des données excel dans un autre fichier excel
    Par titemireille dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2007, 20h57

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