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 :

Lier deux tableaux Excel avec VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Lier deux tableaux Excel avec VBA
    Bonsoir à tous !

    Je viens vous demander de l'aide car je me prends la tête avec un problème qui ne devrait pas tellement en être un. (En même temps je suis plutôt novice en VBA)

    Voici donc: je cherche un code VBA qui me permette de mettre à jour un tableau automatiquement lorsque je remplis un autre tableau dans le même fichier (mais dans une feuille différente). Ci-joint un petit document pour que vous compreniez mieux (Excel 2007).

    Prix Produits.xlsx

    Lorsque je remplis le tableau de la Feuil1, je veux que les données s'ajoutent automatiquement dans le tableau en Feuil2 (attention, il ne faut surtout pas que l'inverse soit possible: si je modifie la Feuil2, la Feuil1 ne doit pas bouger), mais, comme vous l'avez sûrement constaté, uniquement pour les Produits 1, 3 et 7. Sachant que le nombre de ligne (c'est-à-dire, dans ce cas, de jours) est potentiellement infini.
    Pour rendre les choses un peu plus amusantes, il faut également que les données de la Feuil1 soient au format Texte, et que celles de la Feuil2 soit au format Nombre (avec 2 décimales).

    Voilà voilà. J'espère que vous avez compris mon problème et que quelqu'un pourra m'aider car là, je commence à saturer...

    Merci beaucoup et un excellent week-end à tous !

    GUILLAUME

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Une solution utilisant l'évènement Change de la feuille 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Col As Integer
        If Target.Count = 1 Then
            Select Case Target.Column
                Case 2: Col = 2
                Case 4: Col = 3
                Case 8: Col = 4
                Case Else: Exit Sub
            End Select
            Worksheets("Feuil2").Cells(Target.Row, Col) = Target.Value
        End If
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    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.

    La même logique simplifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count = 1 Then
            Select Case Target.Column
                Case 2, 4, 8
                     Feuil2.Range(Target.Address) = Target
            End Select
        End If
    End Sub

    _______________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Bonjour gFZT82, Bonjour Marc-L,

    Merci énormément pour votre aide ! vos deux codes fonctionnent très bien !
    Mais est-ce possible d'intégrer le code à la Feuil2 plutôt qu'à la Feuil 1 ? Si je modifie "Feuil2" dans le code par "Feuil1" ça ne donne rien...

    Merci

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Si tu utilises l'évènement Change de la feuille 1, c'est pour détecter une modification dans cette feuille 1.

    Rappel des conditions que tu as fixées :
    Lorsque je remplis le tableau de la Feuil1, je veux que les données s'ajoutent automatiquement dans le tableau en Feuil2 (attention, il ne faut surtout pas que l'inverse soit possible: si je modifie la Feuil2, la Feuil1 ne doit pas bouger)
    Alors ????

    Cordialement

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Tout à fait !

    Mais n'y a-t-il pas un moyen de faire la même chose à partir de la Feuil2 ??
    Si je demande ça, c'est parce que le vrai tableau sur lequel je souhaite adapter la formule est largement plus grand et est bourré de macro, et j'ai peur de qu'il y ait un conflit entre ces macros...

  7. #7
    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

    Automatiquement non !

    Car c'est un évènement de la feuille de saisie


    _______________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    ________________________________________________________________
    Le mec qui a convaincu les aveugles de porter des lunettes de soleil est quand même un excellent commercial !




  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ok ok, j'ai compris !
    Merci beaucoup à tous les deux !

  9. #9
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour gFZT82 chapeau pour ton code

    Citation Envoyé par gFZT82 Voir le message
    Bonjour,

    Une solution utilisant l'évènement Change de la feuille 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Col As Integer
        If Target.Count = 1 Then
            Select Case Target.Column
                Case 2: Col = 2
                Case 4: Col = 3
                Case 8: Col = 4
                Case Else: Exit Sub
            End Select
            Worksheets("Feuil2").Cells(Target.Row, Col) = Target.Value
        End If
    End Sub

Discussions similaires

  1. Comparer deux colonnes Excel avec VBA
    Par sambrook dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/02/2013, 15h41
  2. lier deux fichiers excel avec conditions
    Par delphine1987 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2011, 16h59
  3. Lier deux tableaux dans Excel
    Par sat478 dans le forum Excel
    Réponses: 3
    Dernier message: 11/01/2010, 09h30
  4. [VBA] Dissocier des feuilles Excel avec VBA
    Par lezinve dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2006, 17h30
  5. Comment recupérer la version d'Excel avec VBA ?
    Par ikoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2005, 19h51

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