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 :

[XL-2016] Liaisons de deux variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut [XL-2016] Liaisons de deux variables
    Bonjour je vais essayer d’énoncer mon problème de la façon la plus claire possible

    Je dispose d'un classeur Excel qui me permet d'ajouter des référence pour un catalogue produit dans ce classeur j'ai une feuille référence ou l'utilisateur ajoute des références non existantes. Dans cette feuille "REFERENCES" j'ai 2 colonnes nommés Familles et Types, ces 2 variables sont importantes.

    J'ai utiliser une macro VBA qui me permet d'exporter en CSV le contenu de la feuille référence car j(utilise ce fichier CSV pour l'importer dans une base de donnée

    Mon problème est le suivant, pour rendre la chose plus visible pour l’utilisateur Famille et Type affichent des libelle , mais pour que ma base de données fasse l'import correctement le fichier CSV doit contenir les codes de ces deux variables et non leur libelles.

    La question est donc : Comment lors de mon transfert vers le CSV je transforme les variables Libelle en code pour que le CSV contienne les bonnes informations ?

    Pour le moment j'ai amené de puis la base de données les codes et libelles dees familles et types mais je ne sais pas trop comment faire en sorte de les permuter au moment de l'export en CSV ^^

    voici mon code pour créer le fichier CSV :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    Sub MaJData()
     
    Dim Fe As Worksheet
        Dim Plage As Range
        Dim Cel As Range
        Dim Tbl() As String
        Dim Ligne As String
        Dim Dossier As String
        Dim chemin As String
        Dim Fichier As String
        Dim i As Long
        Dim j As Long
     
     
     
        Dossier = "C:\Users\paul.fabre\OneDrive\INTERFACE\CSV\REFERENCES\" '<--- chemin à adapter !
     
        'nom du fichier avec la date du jour
        Fichier = "Ajout_Référence_ISA" & " " & Format(Now, "dd-mm-yyyy") & ".csv"
     
        'full path
        chemin = Dossier & Fichier
     
        'si clic sur "Non", fin du programme
        If MsgBox("Voulez-vous créer le fichier '" & Fichier & "' qui sera stocké dans le dossier '" & Dossier & "'?", vbQuestion + vbYesNo, "Fichier .CSV") = vbNo Then Exit Sub
     
        'adapter le nom de la feuille à exporter
        Set Fe = Worksheets("REFERENCES")
     
        'défini la plage sur toute la feuille à exporter
        Set Plage = DefPlage(Fe, 1, 1)
     
     
     
     
     
        'crée les lignes pour les enregistrements tabulés avec comme séparateur ";"
        For i = 1 To Plage.Rows.Count
     
            For j = 1 To Plage.Columns.Count: Ligne = Ligne & Plage(i, j).Value & ";": Next j
     
            'supprime le "," de fin
            Ligne = Left(Ligne, Len(Ligne) - 1)
     
            'stocke dans un tableau et met un ; a la place d'un emplacement vide dans le CSV ( Esthetique)
            ReDim Preserve Tbl(1 To i)
            Tbl(i) = Ligne
     
            'pour la suivante
            Ligne = ""
     
        Next i
     
     
     
        'création du fichier .csv
        Open chemin For Output As #1
     
            For i = 1 To UBound(Tbl): Print #1, Tbl(i): Next i
     
        Close #1
     
        'vérifie que le fichier est bien sur le disque sinon, message d'erreur
        If Dir(chemin) <> "" Then
     
            'message de confirmation
           MsgBox "Le fichier '" & Fichier & "' a bien été créé et enregistré dans le dossier '" & Dossier & "' !", vbInformation
     
        Else
     
            MsgBox "Une erreur c'est produite durant la création du fichier .csv !", vbExclamation
     
        End If
     
    End Sub
     
    Function DefPlage(Fe As Worksheet, L As Long, c As Long) As Range
     
        On Error GoTo fin
     
        With Fe
     
            Set DefPlage = .Range(.Cells(L, c), _
                           .Cells(.Cells.Find("*", .[A1], -4123, , _
                           1, 2).row, .Cells.Find("*", .[A1], -4123, , _
                           2, 2).Column))
     
        End With
     
        Exit Function
     
    fin:
     
        Set DefPlage = Nothing
     
     
    End Function
    Je suis débutant mais j’écoute

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je n'ai pas vraiment compris tes explications, mais pour transférer un onglet en CSV, tu peux cliquer droit sur l'onglet et choisir "Déplacer ou copier".
    En haut, tu choisis "Nouveau classeur"
    En bas, tu coche "Créer une copie"
    Ton fichier Excel est créé.
    Tu l'enregistres sous... en utilisant CSV comme extension.

    Si tu fais tout ça avec l'enregistreur, tu auras le code qu'il te restera à améliorer un peu...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut
    Salut désolé de répondre aussi en retard
    Oui mais c'est pour que d'autres utilisateur le fasse , avec ce que je fais ils n'auront qu'a appuyer sur un bouton

    Du coup il faudrait juste que au moment ou le code VBA d'export de la feuille excel vers du CSV opère au lieu de prendre les valeurs des cellules libelle le code les remplace par les valeurs de cellules codes correspondantes aux libelles

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Citation Envoyé par EcKerri Voir le message
    Du coup il faudrait juste que au moment ou le code VBA d'export de la feuille excel vers du CSV opère au lieu de prendre les valeurs des cellules libelle le code les remplace par les valeurs de cellules codes correspondantes aux libelles
    C'est quoi ces valeurs de cellules correspondantes?

    As-tu un exemple de données que tu as et celles que tu veux obtenir?

Discussions similaires

  1. [XL-2016] Initialisation d'une variable globale
    Par Laskar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/03/2018, 14h53
  2. Liaison entre deux feuilles excel
    Par lunedemiel90 dans le forum Excel
    Réponses: 2
    Dernier message: 26/06/2014, 11h51
  3. liaison entre deux fichier excel (macro)
    Par tamildark dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2008, 17h17
  4. [Excel] "Regrouper" le contenu de deux variables
    Par Oephebia dans le forum Excel
    Réponses: 2
    Dernier message: 29/01/2008, 18h29
  5. liaison de deux classeurs excel
    Par afssaLERH dans le forum Excel
    Réponses: 2
    Dernier message: 28/11/2007, 14h46

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