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

Excel Discussion :

Rapatrier cellule onglet 1 dans onglet 2 suivant variable [XL-2013]


Sujet :

Excel

  1. #1
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut Rapatrier cellule onglet 1 dans onglet 2 suivant variable
    Bonjour,
    J'ai un onglet avec une liste d'article, ici une liste de fruit.

    Colonne A Colonne B
    Pomme
    Poire X
    Banane X


    Je voudrais que quand en colonne B on a mis X, dans l'onglet 2 la colonne A s'alimente de ces codes articles.

    Comment le gérer ?

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Salut leloup84,

    Où se trouve tes "codes articles" ?

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2007
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2007
    Messages : 264
    Points : 349
    Points
    349
    Par défaut
    Bonjour

    Pas très claire la formulation de ta demande.
    Peut-être que ton souhait est de reprendre dans le 2ème onglet seulement les articles cochés avec une croix (X).
    Si c'est bien cela : utiliser le filtre avancé
    dans le premier onglet donner un nom à ta base article ( de A1 à Z3000) par exemple je mets "BD"
    Je positionne un critère de sélection 2 cellules superposés nommés "Crit" par exemple
    Je mets une entête de colonne pour la sélection filtrée que je nomme "Filtrer"

    Mes noms sont des exemples, tu mets ce que tu veux.
    Ci dessous la boite de dialogue Filtre avancé :
    Nom : Capt2.PNG
Affichages : 292
Taille : 20,2 Ko

    et Ci-dessous un visu des 3 zones sur une seule feuille, cela marchera sur des feuilles différentes (à condition d'utiliser les zones nommées)
    Nom : Capt3.PNG
Affichages : 265
Taille : 3,9 Ko

    A+
    Bertrand

  4. #4
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Ok je connaissais ce principe de filtre mais là j'essaie d'obtenir les codes par une formule.
    A terme ce sont des utilisateurs qui auront à le faire et je veux qu'il ait le moins de manipulation possible.
    A savoir une fois qu'ils ont mis un X en colonne B du 1er onglet, que le 2ème onglet reprenne les codes tout seul via une formule.

  5. #5
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2007
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2007
    Messages : 264
    Points : 349
    Points
    349
    Par défaut
    Ok, oui mais comme le disait Kimy_Ire où se trouve les codes, une formule seule ne va pas les inventer ?

    Il faut compléter l'exposé du problème.

    A+

  6. #6
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Onglet 1 de Excel Colonne A se trouve les codes articles (banane, pomme, poire...)
    Onglet 1 de Excel Colonne B, l'utilisateur inscrit "X" ou pas

    Onglet 2 de Excel Colonne A, si un X se trouve dans la colonne B de l'onglet A, on inscrit le code article.

  7. #7
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    leloup84,

    Ce que tu demandes exactement ne peut être effectué aisément par des formules Excel classique.

    Alors en 1) je ne comprends pas pourquoi tu ne filtres pas tout simplement ta colonne B de l'onglet A sur tes "X". Tu auras de cette manière exactement ce que tu recherches sur ton onglet B.

    En 2), si tu ne souhaites pas ce filtre, il me semble que le plus simple est de passer par une formule événementielle.
    Par exemple :
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oRng As Range
     
    If Target.Count = 1 Then
        If Not Application.Intersect(Target, Columns(2)) Is Nothing Then
            If Target = "X" Or Target = "" Then
                Set oRng = Range("B1")
                Feuil2.Columns(1).Clear
                Feuil2.Columns(2).Clear
                For i = 0 To Cells(Cells.Rows.Count, 2).End(xlUp).Row - 1
                    If UCase(oRng.Offset(i, 0)) = "X" Then
                        Feuil2.Cells(Cells.Rows.Count, 1).End(xlUp).Offset(1, 0) = oRng.Offset(i, -1)
                    End If
                Next i
            End If
        End If
    End If
     
    End Sub
    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  8. #8
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Pourquoi je ne filtre pas ?
    En fait j'ai expliqué mon sujet au minimum pour ne pas embrouillé le besoin global.

    L'idée est en fait pour mes commerciaux de leur donné une base de donnée la fameuse colonne A, avec l'ensemble des articles.
    Ils mettent un X ou pas dans la colonne B pour indiquer si leur client prend ou pas l'article.

    L'idée c'est donc dans l'onglet 2 (la feuille 2) de ne récupérer via une formule que les articles sélectionnés dans l'onglet précédent.
    Après par d'autre formules que je connais les colonnes B, C...s'alimenteront tout seul par des prix grâce à des recherches V sur des informations stockés dans un autre onglet.

  9. #9
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Avril 2007
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2007
    Messages : 264
    Points : 349
    Points
    349
    Par défaut
    Et pour continuer dans ma proposition de filtre avancé, il est très aisé de le déclencher à partir d'un bouton dès lors que ton commercial a terminé sa saisie, il valide la commande du client et la feuille 2 se trouve renseignée des article commandés et les formules en regard peuvent être activée, recopiée à loisir. Là le VBA peut être d'une grande utilité et simple à mettre en oeuvre.

    A+
    Bertrand.

  10. #10
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Je ne maîtrise pas complètement le VBA, as-tu un fichier à me donner sur lequel je pourrais au moins m'appuyer au niveau du code et adapter à mon besoin ?

  11. #11
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour leloup84,

    Tu ouvres Excel.
    Tu fait Alt + F11.
    Tu sélectionnes ton onglet A.
    Tu copies/colles le code donné.

    Tu essayes de modifier l'onglet A en conséquence et voir comment se comporte l'onglet B.

    Sinon tu cherches "procédure événementielle VBA" sur ton ami Google (ou autre) et tu auras plusieurs centaines de forums/sites qui te donneront des conseils !

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  12. #12
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Bonjour,
    J'ai copier/coller et tester le code fourni.
    Il me convient.
    Juste besoin d'une précision dans le 2ème onglet, onglet où il me rapatrie les codes, il commence en colonne 2 et 2ème ligne.
    Où cela se gère-t-il dans le code ? Je souhaiterais qu'il commence sur un autre numéro de ligne.

    Autre point comment effacer rapidement ce 2ème onglet via le code déjà inscrit ?

  13. #13
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    La ligne 12 repère la première cellule non vide et se place juste après.
    Donc il suffit que tu mettes quelque chose dans une cellule de la seconde colonne (un . par exemple) pour que le programme de cale à la suite.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  14. #14
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    On ne peut pas lui donner une cellule précise ?
    Mon exemple était mais la réalisation finale est que ces fameux codes viennent incrémentés un devis donc un emplacement spécifique, les 1ères lignes étant réservés à l'identification du client.

  15. #15
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim n As Integer
    '...
                For i = 0 To Cells(Cells.Rows.Count, 2).End(xlUp).Row - 1
                    If UCase(oRng.Offset(i, 0)) = "X" Then
                        n = n + 1
                        Feuil2.Range("A2").Offset(n, 0) = oRng.Offset(i, -1)
                    End If
                Next i
    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  16. #16
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par leloup84 Voir le message
    les 1ères lignes étant réservés à l'identification du client.
    Ce qui veut dire que les cellules sont occupées et donc que la macro devrait se caler d'elle-même à la suite.
    As-tu au moins essayé ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  17. #17
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Pour compléter la réponse de Menhir, je précise que la macro supprime les colonnes 1 et 2 afin d'être tout le temps "à jour" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Feuil2.Columns(1).Clear
                Feuil2.Columns(2).Clear
    Ainsi, si tu souhaites conserver, par exemple la première ligne de manière permanente, tu peux faire quelque chose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                With Feuil2
                    Range(.Range("A2"), .Cells(.Rows.Count, 1).End(xlUp)).Clear
                    Range(.Range("B2"), .Cells(.Rows.Count, 2).End(xlUp)).Clear
                End With
    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  18. #18
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Et cette ligne de code qui annonce d'effacer l'ensemble de la colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Columns(1).Clear
    Est-il possible de le faire sur une plage de ligne.
    Par exemple de B20 à B30 ?

  19. #19
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par leloup84 Voir le message
    Est-il possible de le faire sur une plage de ligne.
    Par exemple de B20 à B30 ?
    Tu ne crois pas que tu pourrais faire un tout petit effort et trouver ça par toi-même ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil2.Range("B20:B30").Clear
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  20. #20
    Membre actif
    Inscrit en
    Janvier 2006
    Messages
    1 218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 218
    Points : 257
    Points
    257
    Par défaut
    Pour effacer une plage c'est bon. Je n'avais pas reçu l'alerte par mail qu'il y avait déjà une réponse. Désolé.
    En revanche cela change la mise en forme de mes cellules (taille, bordure...) est-ce normal ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Impression des onglets nommés dans des cellules
    Par Oceane1986 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 30/01/2015, 14h52
  2. Format dans proc report suivant variable
    Par Babzoo dans le forum ODS et reporting
    Réponses: 4
    Dernier message: 14/05/2014, 14h00
  3. [XL-2007] rapatrier les données de plusieurs onglets dans un onglet
    Par fthem dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 31/01/2014, 10h18
  4. Comparaison cellules dans onglets différents
    Par Estaque3394 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/11/2012, 10h29
  5. Réponses: 1
    Dernier message: 08/12/2009, 09h24

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