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 :

Compléter un fichier à partir d'un autre condition sur 2 colonnes


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Compléter un fichier à partir d'un autre condition sur 2 colonnes
    Bonjour, tout est dans le titre.
    J'ai récupéré le code qui fonctionne sur 2 fichiers simplifiés, mais j'essai d'adapter le code à mes 2 fichiers initiaux qui sont beaucoup plus gros et complexes (+ de colonnes et de lignes etc etc). Ainsi, j'aurai besoin de comprendre le code suivant, pourriez-vous m'aider s'il vous plait ?
    Voici les 2 fichiers simplifiés en cas d'incompréhension

    Merci par avance



    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
    Sub Completer()
    Dim WbS As Workbook, WbC As Workbook
    Dim WsS As Worksheet, WsC As Worksheet
    Dim Cel As Range, C As Range
    Dim firstAddress As String
        'Fichier source
        Set WbS = Workbooks("Fichier 1 complété par différentes personnes.xls")
        Set WsS = WbS.Worksheets("41 - Balance brute avec montant")
        'Fichier Cible
        Set WbC = Workbooks("Fichier 2 à compléter avec le 1.xls")
        Set WsC = WbC.Worksheets("41 - Balance brute avec montant")
        For Each Cel In WsS.Range("E2:E" & WsS.Range("A" & Rows.Count).End(xlUp).Row)
            'WsS.Range("A" & Rows.Count).End(xlUp).Row : retourne la valeur 41 et permet de parcourir tout le tableau source
            If Application.CountA(Cel.Resize(1, 3)) > 0 Then
                'Recherche du code article
                Set C = WsC.Columns(3).Find(Cel.Offset(0, -2), , xlValues, xlWhole)
                If Not C Is Nothing Then
                    firstAddress = C.Address
                    Do
                       'Contrôle de concordance du Code entité IN et RG Siège
                        If Cel.Offset(0, -4) = C.Offset(0, -2) And Cel.Offset(0, -3) = C.Offset(0, -1) Then
                            Cel.Resize(1, 3).Copy C.Offset(0, 9)
                            Exit Do
                        End If
                        Set C = WsC.Columns(3).FindNext(C)
                    Loop While Not C Is Nothing And C.Address <> firstAddress
                End If
            End If
        Next Cel
        Set C = Nothing: Set WsC = Nothing: Set WsS = Nothing: Set WbC = Nothing: Set WbS = Nothing
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    version Les Inconnus : Vous pouvez répétez la question ?‼

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    C'est bon, j'ai réussi à adapter le code.
    En fait, je demandais des explications sur les lignes de code, simplement des commentaires. Je sais que les habitués du code peuvent facilement traduire une ligne en français... Si ça pouvait encore être possible malgré que je sois arrivé à adapter le code, j'en serai ravi. Cela me permettrait de pouvoir réutiliser plus aisément certaines formules, et avoir l'habitude de code de cette manière.

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Pour traduire un code, placer le curseur sur une instruction puis appuyer sur la touche !

    Ensuite si vraiment une ligne particulière pose un problème, indiquer alors son numéro …

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Maintenant que le code fonctionne, le problème réside dans le fait que mon code a besoin d'un nom de fichier (source) pour aller chercher les données et les copier dans un fichier (cible).
    Je ne peux pas à chaque fois toucher le code et modifier le nom du fichier source... il peut y avoir une multitude de fichier .Xls dont j'ai besoin de récupérer les données

    J'ai donc pensé à renommer tout les fichiers .Xls sous le même nom avec un numéro à la fin (qui sera la variable i). Je voulais faire un .bat et l'éxécuter depuis mon code vba (fichier cible) pour effectuer cette tâche mais j'ai pas réussi, alors, une fois que j'ai placé tout les fichiers dans mon répertoire, je les sélectionne, fait F2, les renomme d'un nom unique (Balance CT10-CT00) et windows rajoute (1), (2),... (n) à la fin.

    Je veux donc me servir de cela (i) => comme variable pour pouvoir parcourir l'ensemble des fichiers .xls qui ont été renommé...
    Une seule boucle est suffisante selon moi (ouverte au début et fermé à la fin de mon code)

    Si ma demande est assez explicite, pourriez-vous m'aider s'il vous plait?
    Le code

    PS : les fichiers sources seront sécurisé pour avoir la même structure et ainsi pouvoir récupérer les données facilement

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    si un répertoire est dédié uniquement aux fichiers à traiter, pas besoin de les renommer …

    Et dans les deux cas, les fichiers peuvent être parcourus à l'aide de la fonction Dir

    Voir aussi cette discussion pour une application particulière de celle fonction.

Discussions similaires

  1. [XL-2007] Compléter un tableau à partir d'un autre tableau
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/04/2014, 11h57
  2. Compléter une table à partir d'une autre table
    Par MALPI dans le forum SAS Base
    Réponses: 2
    Dernier message: 28/03/2014, 10h52
  3. Réponses: 2
    Dernier message: 11/02/2014, 15h59
  4. [XL-2003] Ouverture obligatoire d'un fichier à partir d'un autre
    Par dlight dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/01/2011, 13h03
  5. [AC-2003] Comment compléter une table à partir d'une autre .
    Par bogmarley dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/09/2009, 19h02

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