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 ?
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 ?
Salut leloup84,
Où se trouve tes "codes articles" ?
Cordialement,
Kimy
La logique :
Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !
- Plus ya de gruyère, moins ya de gruyère.
- Plus tu pédales moins vite, moins tu avances plus vite.
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é :
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)
A+
Bertrand
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.
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+
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.
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 :
Cordialement,
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
Kimy
La logique :
Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !
- Plus ya de gruyère, moins ya de gruyère.
- Plus tu pédales moins vite, moins tu avances plus vite.
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.
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.
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 ?
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 :
Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !
- Plus ya de gruyère, moins ya de gruyère.
- Plus tu pédales moins vite, moins tu avances plus vite.
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 ?
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.
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.
Bonjour bonjour,
Cordialement,
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
Kimy
La logique :
Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !
- Plus ya de gruyère, moins ya de gruyère.
- Plus tu pédales moins vite, moins tu avances plus vite.
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" :
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 Feuil2.Columns(1).Clear Feuil2.Columns(2).Clear
Cordialement,
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
Kimy
La logique :
Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !
- Plus ya de gruyère, moins ya de gruyère.
- Plus tu pédales moins vite, moins tu avances plus vite.
Et cette ligne de code qui annonce d'effacer l'ensemble de la colonne
Est-il possible de le faire sur une plage de ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Feuil2.Columns(1).Clear
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.
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 ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager