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 :

Transférer certaines cellules d'une ligne d'un tableau à un autre, en fonction de valeur d'une cellule commune [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut Transférer certaines cellules d'une ligne d'un tableau à un autre, en fonction de valeur d'une cellule commune
    Bonjour à toutes et à tous,

    Désolé de vous interpeller si ma problématique est un peu basique, mais je ne trouve pas de FAQ correspondante : je cherche à transférer certaines cellules des lignes d'un tableau1 à un tableau2, dont une des cellules serait commune aux deux (une brave référence à 6 chiffres)...
    Donc pour telle réf. du tableau 1, check le tableau 2 si existe =>go



    Merci pour votre aide éventuelle dont je ne doute pas, je connais les ressources sans limite de ce forum d'exception !!!... (il faudrait un emoj avec une grande langue et on un (bip!)...)

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 436
    Par défaut
    Bonjour,

    Il faut sans doute exploiter les possibilités ouvertes par les fonctions INDEX, EQUIV ou RECHERCHEV.
    Un bon tutoriel: Cinq bonnes raisons de préférer INDEX EQUIV à RECHERCHEV.

    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut
    Merci, mais ce n'est pas adapté : je les utilise déjà à tort et à travers pour d'autres usages. Par contre un bon petit bout de vba bien sioux, ça certainement. La valeur des références changent constamment...

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 436
    Par défaut
    Bonjour,

    Pour ma part, il me faudrait un petit exemple concret des tableaux 1 et 2 "avant" et telles que souhaitées "après" (2, 3 lignes suffisent) pour pouvoir vous répondre concrètement.

    Cordialement.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Pour ma part, il me faudrait un petit exemple concret des tableaux 1 et 2 "avant" et telles que souhaitées "après" (2, 3 lignes suffisent) pour pouvoir vous répondre concrètement.

    Cordialement.

    Et moi qui croyais que ma création allait rendre super bien...Nom : Sans nom-1.jpg
Affichages : 237
Taille : 221,2 Ko

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Peux-tu expliquer pourquoi un simple Index/Equiv « n'est pas adapté »
    A première vue c'est la solution.

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Pour rebondir sur la proposition de Patrice et d'Eric, que je salue au passage.

    Dans un tel cas de figure, je place la fonction
    equiv
    dans une colonne accessoire.
    Les index des colonnes suivantes s'y réfèrent, ce qui rend l'écriture plus aisée.

    Qui plus est.
    Vu la disposition des données telles qu'elles apparaissent, une seule et même formule Index serait utilisée.
    Ce en utilisant comme paramètre la fonction
    Colonne()
    +/- une valeur constante.

  8. #8
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Bonjour,

    Peux-tu expliquer pourquoi un simple Index/Equiv « n'est pas adapté »
    A première vue c'est la solution.
    Vu comme ça, c'est vrai qu'un simple Index/Equiv va très bien ; j'en ai des megatableaux remplis, et justement c'est ce que je voudrais éviter sur le prochain qui risque de faire mal avec 50.000 lignes et 350 colonnes : je ne veux plus de millions de cellules à formules qui recalculent au moindre mouvement : ça prend un temps de ouf et ça plante souvent avec toutes les conséquences...
    Et ce même si je fais sauter le calcul automatique, avec ce que ça comporte comme inconvénients, donc pas la solution dans ce cas.
    Sans parler du fait qu'une cellule à formule, bah..c'est une cellule à formule : impossible de consulter/éditer les contenus textes rapatriés, or je n'ai ici que ça, des pavés.
    Donc dans mon esprit basique : une bonne macro et zou
    Non ?

  9. #9
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    sur le prochain qui risque de faire mal avec 50.000 lignes et 350 colonnes
    Dans ce cas, mieux vaut utiliser un gestionnaire de base de données (Access ou autre)

    Si tu tiens malgré tout à utiliser Excel via VBA

    Donc dans mon esprit basique : une bonne macro et zou
    Non ?
    Réponse: 100 fois Non!

    Comme dit le proverbe

    D'abord penser Excel avant VBA
    En effet, tu ne passeras pas à côté d'une formulation rigoureuse sur Excel, laquelle sera ensuite exploitée par VBA.
    Er ce selon le schéma classique
    Formulation Excel => Interrogation de la formule dans la fenêtre Exécution => Evaluate par VBA

  10. #10
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mai 2020
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 150
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Oui effectivement "j'en ai bien peur"... (j'ai jamais encore creusé PQ, mais "tout" semble m'y renvoyer de plus en plus)
    Merci!

    Citation Envoyé par MarcelG Voir le message
    Merci pour ta réponse : ça c'est l'approche "pro", moi je fais partie de ces nombreux utilisateurs obligés de se frotter à ces problématiques "à coups de pied au cul", non pas qu'on aime pas le code mais qu'on a pas le long passé culturel/philosophique permettant ce genre d'approche. On passe "par le haut", la surface, un peu comme le mec qui n'y connait pas grand chose en mécanique mais qui arrive quand même à résoudre certains problèmes avec sa voiture, et on essaie de redescendre vers le dogme...
    Sûr que c'est pas bien, mais c'est comme ça : d'où nos questions à la con

    Mon problème n'est pas résolu mais merci quand même !

  11. #11
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 436
    Par défaut
    Bon, une solution "primaire" qui ne va que dans un sens: ce qui est changé dans la feuille 1 est recopié dans la feuille 2 à chaque changement de valeur. Elle suppose que l'on sait quelle colonne va dans quelle autre colonne. Suppose aussi qu'il n'y a pas de doublons des Ref dans aucune des 2 feuilles. Ref doit aussi être en colonne A dans les 2 feuilles.
    Ne reprend pas ce qui a déjà été entré en formules dans la feuille 2. Pour cela il suffit de faire un copier - coller valeurs.
    Code à placer dans la "Feuil1". A adapter.
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim sRef As String, r As Range
        If Target.Count > 1 Then Exit Sub       '--- Exit
        sRef = Range("A" & Target.Row).Value
        If sRef = "" Then Exit Sub              '--- Exit
        '--- cherche ref dans tableau 2
        With ThisWorkbook.Worksheets("Feuil2")
            Set r = .Range("A:A").Find(What:=sRef, LookAt:=xlWhole)
            If r Is Nothing Then
                MsgBox "Ref " & sRef & " non trouvée.", , "Pour info"
            Else
                '--- recopie la valeur changée dans tableau 2 dans la bonne colonne
                Select Case Target.Column
                    Case 2:     .Cells(r.Row, 4) = Target.Value     '--- 2 = colonne départ, 4 = colonne arrivée
                    Case 3:     .Cells(r.Row, 5) = Target.Value
                    Case 5:     .Cells(r.Row, 8) = Target.Value
                    Case 6:     .Cells(r.Row, 9) = Target.Value
                    '--- etc.
                End Select
            End If
        End With
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  12. #12
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Je pense que tu peux réaliser ça sans formule et sans macro avec Power Query

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copier certaines cellules d'une ligne si conditions remplies.
    Par Guizmonster dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/03/2020, 10h39
  2. Réponses: 5
    Dernier message: 29/03/2019, 10h08
  3. Réponses: 6
    Dernier message: 11/12/2018, 19h25
  4. Réponses: 15
    Dernier message: 24/02/2015, 08h43
  5. Réponses: 2
    Dernier message: 11/08/2006, 14h57

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