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 :

FORMULAIRE VBA: transfert données sur 2 classeurs ?


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut FORMULAIRE VBA: transfert données sur 2 classeurs ?
    Bonjour,

    peut on travailler sur 2 classeurs à partir d'un seul formulaire??
    J'ai créé un formulaire VBA sur un classeur. La saisie des informations sur le formulaire se dispatche sur 3 feuilles
    Pour avancer dans mon projet, je souhaiterai savoir si les informations saisie dans ce formulaire peuvent aussi se transférer sur un 2nd classeur?

    Merci pour votre retour

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut
    Bonjour.

    La réponse est : oui.
    Pour aller plus loin il va falloir nous en dire un peu plus (un bout de code peut être ?)
    Disons qu'il y a plusieurs manière de faire et plusieurs cas (créer un nouveau classeur, ouvrir un classeur existant, utiliser un autre classeur déjà ouvert...)



    Etienne

  3. #3
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut
    bonjour,

    attention je suis débutante et mes codes sont le fruit d'une recherche internet. alors voilà ma programmation
    __________________________________________________
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    'Attention les deux lignes suivantes doivent être impérativement placées en tout début de programme
    Option Explicit
    Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm
     
     
    'Correspond au programme du bouton QUITTER
    Private Sub CommandButton2_Click()
    Unload Me ' Vide et ferme l'Userform ( formulaire)
    End Sub
     
    'Correspond au programme du bouton NOUVELLE COMMANDE
    Private Sub CommandButton4_Click()
    Unload Me ' Vide et ferme l'Userform ( formulaire)
    FORMULAIRE.Show 'Affiche le  formulaire
    End Sub
     
    ' CORRESPOND AU TRANFERT DE DONNEES SUR FEUILLE SUIVI BOOKING CLIENT ET SUIVI PLANIFICATION ROUTE
    Private Sub CommandButton3_Click()
     
    Dim L As Integer
     
    If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau booking ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
    With Worksheets("SUIVI booking client")
    L = .Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE
     
    .Range("A" & L).Value = TextBox32
    .Range("B" & L).Value = ComboBox7 'Insère la donnée de la liste déroulante dans la colonne B
    .Range("C" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne C
    'et à suivre....
    .Range("D" & L).Value = ComboBox1
    .Range("E" & L).Value = TextBox2
    .Range("F" & L).Value = TextBox3
    .Range("G" & L).Value = TextBox4
    .Range("H" & L).Value = TextBox5
    .Range("I" & L).Value = TextBox6
    .Range("J" & L).Value = TextBox37
    .Range("K" & L).Value = ComboBox2
    .Range("L" & L).Value = TextBox7
    .Range("M" & L).Value = TextBox8
    .Range("N" & L).Value = ComboBox5
    .Range("O" & L).Value = TextBox35
    .Range("P" & L).Value = TextBox36
    .Range("Q" & L).Value = TextBox10
    .Range("R" & L).Value = TextBox11
    .Range("S" & L).Value = TextBox12
    .Range("T" & L).Value = TextBox28
    .Range("U" & L).Value = TextBox13
    .Range("V" & L).Value = TextBox14
    .Range("W" & L).Value = TextBox15
    .Range("X" & L).Value = TextBox16
    .Range("Y" & L).Value = TextBox29
    .Range("Z" & L).Value = TextBox17
    .Range("AA" & L).Value = TextBox18
    .Range("AB" & L).Value = ComboBox3
    .Range("AC" & L).Value = TextBox33
    .Range("AD" & L).Value = ComboBox4
    .Range("AE" & L).Value = TextBox34
    .Range("AF" & L).Value = TextBox19
    .Range("AG" & L).Value = ComboBox8
    .Range("AH" & L).Value = TextBox20
    .Range("AI" & L).Value = TextBox30
    .Range("AJ" & L).Value = TextBox21
    .Range("AK" & L).Value = TextBox22
    .Range("AL" & L).Value = TextBox23
    .Range("AM" & L).Value = TextBox24
    .Range("AN" & L).Value = TextBox25
    .Range("AO" & L).Value = TextBox31
    .Range("AP" & L).Value = TextBox26
    .Range("AQ" & L).Value = TextBox27
    End With
     
    With Worksheets("Suivi planification route aval")
     
    Dim P As Integer
    P = .Range("a65536").End(xlUp).Row + 1
    .Range("A" & P).Value = TextBox32
    .Range("B" & P).Value = ComboBox7 'Insère la donnée de la liste déroulante dans la colonne B
    .Range("C" & P).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne C
    'et à suivre....
    .Range("D" & P).Value = ComboBox1
    .Range("E" & P).Value = TextBox2
    .Range("F" & P).Value = TextBox3
    .Range("G" & P).Value = TextBox4
    .Range("H" & P).Value = TextBox5
    .Range("I" & P).Value = TextBox6
    .Range("J" & P).Value = TextBox37
    .Range("K" & P).Value = ComboBox2
    .Range("L" & P).Value = TextBox7
    .Range("M" & P).Value = TextBox8
    .Range("N" & P).Value = ComboBox5
    .Range("O" & P).Value = TextBox35
    .Range("P" & P).Value = TextBox36
    .Range("Q" & P).Value = ComboBox3
    .Range("R" & P).Value = TextBox33
    .Range("S" & P).Value = ComboBox4
    .Range("T" & P).Value = TextBox34
    .Range("U" & P).Value = TextBox19
    .Range("V" & P).Value = ComboBox8
    .Range("W" & P).Value = TextBox20
    .Range("X" & P).Value = TextBox30
    .Range("Y" & P).Value = TextBox21
    .Range("Z" & P).Value = TextBox22
    .Range("AA" & P).Value = TextBox23
    .Range("AB" & P).Value = TextBox24
    .Range("AC" & P).Value = TextBox25
    .Range("AD" & P).Value = TextBox31
    .Range("AE" & P).Value = TextBox26
    .Range("AF" & P).Value = TextBox27
     
     
    End With
    End If
     
     
     
    'Correspond au programme du FORMULAIRE
    'Cet évènement est important car il permet de définir les propriétés des objets et les valeurs par défaut des variables, lors du lancement du Userform.
    Private Sub UserForm_Initialize() 'à l'initialisation de l'userform
    ' Déclaration des variables grâce à Dim
    '    1° Choisir un nom
    '    2° Choisir un TYPE (= définir la nature du contenu)
    ' --------------------------------------------------------
    Dim J As Long 'déclare la variable J
    Dim I As Integer
     
    ' DATE DU JOUR SAISIE FORMULAIRE
     
    TextBox32.Value = Format(Date, "dd / mm / yy")
     
     
    ' Affecter une valeur à une variable (= fixer la valeur de la variable)
      Set Ws = Sheets("SUIVI booking client")
          Set Ws = Sheets("suivi planification route aval")
     
      'Attention ce nom doit correspondre au nom de votre ONGLET
    'On stock le nom de la feuille "SUIVI booking client" dans une variable nommée WS
    _______________________________________________________________

    Les informations sont transférées vers 2 onglets "planification route aval" et "suivi booking client" (le classeur s'intitule "traitement commande client")
    Je souhaite faire des tranferts de données sur un nouveau classeur
    merci pour votre aide

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 055
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Ws = Sheets("SUIVI booking client")
    Set Ws = Sheets("suivi planification route aval")
    C'est dans la déclaration de tes variables objets que la solution se trouve.
    Lorsque l'on déclare une variable objet telle qu'une cellule, une plage de cellules ou une feuille, il est important de préciser la filiation totale. Dans ton programme, Il manque donc de préciser le classeur à la variable WS.
    Cependant je m'interroge sur le fait que tu utilises WS pour définir deux feuilles différentes sur des lignes qui se suivent. Il est évident que la deuxième affectation l'emporte sur la première.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim WS As Worksheet
     Set WS = Workbooks("Classeur2").Worksheets("Feuil2")
     WS.Cells(2, 1) = "Toto"
    On peut utiliser également ThisWorkbook si la feuille fait partie du classeur où se trouve le code VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim WS As Worksheet
     Set WS = ThisWorkbook.Worksheets("Feuil2")
     WS.Cells(2, 1) = "Toto"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut création de classeur
    Et pour créer un nouveau classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim wb as workbook
    dim fileName as string
    set wb = workbooks.add 'pour un nouveau classeur
    fileName = "C:/nouveauclasseur.xlsx"
    wb.close SaveChanges:=True, Filename:=fileName 'fermer et sauvegarder
     
    set wb = workbooks.open(fileName) 'pour ouvrir un classeur (il y a tout un tas d'option voir aide)
    Bon courage

  6. #6
    Candidat au Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut
    merci beaucoup pour vos réponses,
    je m'y mets et reviens vers vous asap

Discussions similaires

  1. UserForm + Extraction de données sur nouveau classeur
    Par tpcforever dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/06/2007, 13h17
  2. [VBA-E]userform sur 2 classeurs
    Par fast&furious dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 14/12/2006, 19h56
  3. [VBA-E] travailler sur deux classeurs
    Par argv666 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/09/2006, 11h40
  4. Réponses: 8
    Dernier message: 29/08/2006, 09h31
  5. [VBA-E]travail sur deux classeurs excel
    Par richou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/04/2006, 11h59

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