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 - récupérer valeur cellule vers autre fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2024
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2024
    Messages : 1
    Par défaut Macro - récupérer valeur cellule vers autre fichier
    Bonjour,

    Ma demande est un peu spécifique.
    J’aimerai créer une macro avec un bouton dans la cellule "Éditer liste de colisage" pour : Récupérer certaines valeurs de cellules dans la ligne ou sera noté dans la colonne liste de colisage "LC".

    Du fichier Base nomenclature vers le fichier Base liste matériel a expédier :
    Poids total/App => Poids net
    Quantité total => Quantité 'c'
    n0 plan ou article => REPÈRE si numéro commençant par un 3
    n° plan ou article => N° dessin si numéro commençant par un 4
    Désignation FR/EN => Description

    Si le numéro commence par un 3, il faut récupérer le numéro commençant par un 4 dans le niveau au dessus le plus proche. pour les inscrire dans n° dessin et repère
    Par contre, si le numéro commençant par un 3 est au niveau 0 il n'y a pas de récupération de niveau supérieur
    La recherche de numéro commençant par un 4 dans les niveau supérieur se fait uniquement si le niveau du numéro commençant par un 3 est au 1,2,3 ou 4.

    Je ne sais pas si j'ai été claire, mais je vous joint mes fichiers excel et des screen écran.

    Merci par avance !

    Nom : BASE NOMENCLATURE TEST.png
Affichages : 120
Taille : 66,5 Ko

    Nom : BASE_LISTE MATERIEL A EXPEDIER - TEST.png
Affichages : 106
Taille : 56,4 Ko
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 223
    Par défaut
    Hello,

    plutôt que de vous donner un code qui aura couté du temps et de la réflexion aux personnes qui pourraient vous aider, voyez déjà avec chatgpt (ou autre) et revenez avec les difficultés que vous n'arriverez pas à résoudre.

    Ici on veut bien aider, mais pas tout faire à votre place... ou alors vous nous donnez votre paye

    Voici le code que m'a donné chatgpt avec un copié/collé de votre demande
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Sub TransfererListeColisage()
        ' Déclarez les variables pour les deux fichiers
        Dim wsNomenclature As Worksheet
        Dim wsMateriel As Worksheet
        Dim derniereLigneNomenclature As Long, derniereLigneMateriel As Long
        Dim ligne As Long
        Dim numero As String
        Dim niveau As Integer
        Dim repere As String
        Dim dessin As String
     
        ' Définissez les feuilles de travail
        Set wsNomenclature = Workbooks("Base nomenclature.xlsx").Worksheets("NomFeuilleNomenclature") ' Remplacez par le nom exact de la feuille
        Set wsMateriel = Workbooks("Base liste matériel à expédier.xlsx").Worksheets("NomFeuilleMateriel") ' Remplacez par le nom exact de la feuille
     
        ' Trouver la dernière ligne de données dans les fichiers
        derniereLigneNomenclature = wsNomenclature.Cells(wsNomenclature.Rows.Count, "A").End(xlUp).Row
        derniereLigneMateriel = wsMateriel.Cells(wsMateriel.Rows.Count, "A").End(xlUp).Row + 1 ' Commence l'écriture après la dernière ligne
     
        ' Parcourir les lignes dans "Base nomenclature"
        For ligne = 2 To derniereLigneNomenclature ' Assurez-vous que les titres sont en ligne 1
            If wsNomenclature.Cells(ligne, "ColonneListeDeColisage").Value = "LC" Then ' Remplacez par la colonne exacte
                ' Récupérer les données de la ligne
                numero = wsNomenclature.Cells(ligne, "ColonneNumeroPlan").Value ' Colonne numéro plan ou article
                niveau = wsNomenclature.Cells(ligne, "ColonneNiveau").Value ' Colonne niveau
     
                ' Vérifiez si le numéro commence par 3 ou 4
                If Left(numero, 1) = "3" Then
                    ' Cas pour numéro commençant par 3 - Chercher le 4 au-dessus
                    repere = numero
                    dessin = ChercherNumeroDessin(wsNomenclature, ligne)
                ElseIf Left(numero, 1) = "4" Then
                    ' Cas pour numéro commençant par 4
                    dessin = numero
                    repere = "" ' Pas de repère si numéro commence par 4
                End If
     
                ' Remplir les informations dans "Base liste matériel à expédier"
                With wsMateriel
                    .Cells(derniereLigneMateriel, "ColonnePoidsNet").Value = wsNomenclature.Cells(ligne, "ColonnePoidsTotalApp").Value
                    .Cells(derniereLigneMateriel, "ColonneQuantiteC").Value = wsNomenclature.Cells(ligne, "ColonneQuantiteTotal").Value
                    .Cells(derniereLigneMateriel, "ColonneRepere").Value = repere
                    .Cells(derniereLigneMateriel, "ColonneNDessin").Value = dessin
                    .Cells(derniereLigneMateriel, "ColonneDescription").Value = wsNomenclature.Cells(ligne, "ColonneDesignation").Value
                End With
                derniereLigneMateriel = derniereLigneMateriel + 1
            End If
        Next ligne
        MsgBox "Transfert terminé !"
    End Sub
     
    Function ChercherNumeroDessin(ws As Worksheet, ligne As Long) As String
        Dim i As Long
        ' Remonter les lignes pour trouver un numéro commençant par 4
        For i = ligne - 1 To 1 Step -1
            If Left(ws.Cells(i, "ColonneNumeroPlan").Value, 1) = "4" Then
                ChercherNumeroDessin = ws.Cells(i, "ColonneNumeroPlan").Value
                Exit Function
            End If
        Next i
        ChercherNumeroDessin = "" ' Retourne une chaîne vide si aucun numéro 4 n'est trouvé
    End Function

Discussions similaires

  1. accelerer macro lecture ecriture cellule nommée autres fichiers
    Par jojo_peter dans le forum Macros et VBA Excel
    Réponses: 48
    Dernier message: 20/06/2016, 14h47
  2. Réponses: 1
    Dernier message: 02/07/2014, 17h20
  3. pb macro copie cellule vers autre classeur
    Par pilcar dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/12/2012, 16h15
  4. [E-2003] Copier/Coller plage cellules vers autre fichier
    Par macat dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/10/2008, 15h01
  5. Macro copier des cellules d'un fichier à l'autre
    Par Tof XXX dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/01/2008, 13h45

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