Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Besoin d'aide pour corriger un pan de code vba

  • Initiateur de la discussion Initiateur de la discussion apprenti
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

apprenti

XLDnaute Nouveau
Bonjour tout le monde,

Est ce que quelqu'un peut me dire qu'est ce qui cloche dans ce morceau de code vba sous excel, mon but est celui de mettre à jour une liste déroulante sur le champ B:B
à chaque fois qu'un 'nom' nouveau y est inscrit sur le champ B:B mais à partir d'une plage nommée appelée 'listearticle' et qui se trouve sur une autre feuille du classeur
donc chaque fois qu'un nouveau nom d'article est inséré dans l'une des cellules du champ B:B et qui n'existe pas dans la liste déroulante, ce nouveau nom est rajouté à la 'listearticle' qui se trouve sur une autre feuille du classeur et comme ça 'listearticle' qui est commune pour plusieurs feuilles est mise à jour et puis le nouveau nom apparaîtra dans chaque liste déroulante qui renvoi les valeurs de 'listearticle'

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
Dim Cell As Range
For Each Cell In Range("B4:B" & Range("B500").End(xlUp).Row)
Cell.Select
If Application.CountIf(Range("listearticle"), Cell) = 0 Then
Range("J500").End(xlUp).Offset(1, 0) = Cell
End If
Next Cell
End If
End sub

merci pour votre aide
 
Re : Besoin d'aide pour corriger un pan de code vba

Salut apprenti et le forum
Est ce que quelqu'un peut me dire qu'est ce qui cloche dans ce morceau de code vba ...à partir d'une plage nommée appelée 'listearticle' et qui se trouve sur une autre feuille du classeuricle'
J'ai beau chercher, je ne vois nulle part mention d'une autre feuille dans ta macro : tout se passe sur la feuille liée au module contenant le code !

Je ne comprends pas bien l'intérêt de faire une boucle sur B, seules les cellules de target appartenant à B peuvent ne pas être dans la liste.

Ne connaissant que ce que tu as mis dans le sujet, je ne peux qu'espérer que "listearticle" soit une plage nommée dynamique.
A+
 
Re : Besoin d'aide pour corriger un pan de code vba

Bonjour Gorfael, Bonjour Klin89,
Merci pour vos réponses,
Effectivement comme tu as pu le deviner Gorfael, listearticle est une plage nommée dynamique dans la feuille2 sur le champ "J:J" d'ou range (J500) dans le code... et sur la feuille1 j'ai appliqué sur les cellules du champ "B:B" une regle de validation de données en forme de liste déroulante laquelle renvoi les données du champ "feuil2!J:J" ceci marche en utilisant la fonction "decaler" et "Nbval". voir ICI la solution de CbernardT.., par contre avec le VBA j'aimerais que quand je tape un nouvel article sur le champ B:B qui est une liste déroulante j'aimerais que le champ "feuil2!J:J" soit mis à jour et trié" comme ça toute les liste déroulantes qui ont ce champ en commun seront mise à jour également.

J'ai essayé d'utiliser à la 7ém ligne du code: If Application.CountIf(worksheet(2)Range("listearticle"), Cell) = 0 Then on y ajoutant worksheet pour faire référence à Feuil2 du classeur mais ça n'a pas marché par ce que peut être je ne sais pas comment la déclarer plus haut ou peut être ce n'est pas du tout la procédure adéquate à la situation.

Pour la solution proposée par Klin89 c'est pas vraiment la question même si la message box m’intéresse de l'ajouter dans mon code sauf que sur la pièce jointe de la solution proposée elle ne marche pas à 100% et pourtant avoir une msgbx de validation m’intéresse de l’intégrer à mon code

Merci bcp pour votre attention et votre assistance
 
Dernière édition:
Re : Besoin d'aide pour corriger un pan de code vba

Salut apprenti et le forum
Pas sûr de tout comprendre :
Tu as une liste de validation en B
Tu veux que si la valeur entrée n'est pas dans la lise de validation, elle s'enregistre dans celle-ci.

Si c'est ça, à ma connaissance, ce n'est pas faisable : une valeur non contenu dans la liste de validation est testée et validée avant de déclencher une macro à lancement automatique. donc, ce n'est que quand la cellule est vide ou contient une valeur appartenant à la liste que Worksheet_Change se lance.
Mais je ne connais pas tout d'excel, ni des possibilités ajoutées depuis la version 2003.
Ou, plus sûrement, je n'ai pas compris le problème.

Nota : je n'ai rien à faire d'une solution d'un autre problème : Je sais déjà faire.
La tienne de solution pourrait être intéressante, parce que ton interprétation peut poser des problème.
Et je n'ai pas envie de télécharger x fichier pour un problème qui n'existe peut-être pas dans les solutions proposées.
A+
 
Dernière édition:
Re : Besoin d'aide pour corriger un pan de code vba

Salut Gorfael,

En effet tu as très bien compris mon problème et pour que la liste de validation "déroulante" accepte une nouvelle entrée il suffit de décocher l'option de message erreur dans validation, donc c'est faisable.
Et pour être plus explicite je joins un fichier test.xls alors c'est simple je voudrais à l'aide d'un petit bout de code vba faire en sorte que lorsque je rajoute un article nouveau dans le champ B (feuil1) et qui n'existe pas dans le champ B "article source" (feuil2) que celui-ci soit rajouté et mis à jour et trié dans la liste feuil2!B2:B100 et ce depuis la liste feuil1!B2:B, et si possible de rajouter une msgbx qui m'avertit que je suis sur le point de rajouter un nouvel article OUI ou NON.
Pour plus d'infos voir pièce jointe.
Merci.
 

Pièces jointes

Re : Besoin d'aide pour corriger un pan de code vba

Salut apprenti et le forum
Le fichier en pièce jointe étant vide, il n'est pas très utile...
Ton explication n'a que peu de rapport avec le sujet initial
Edit : une pièce jointe
A+
 

Pièces jointes

Dernière édition:
Re : Besoin d'aide pour corriger un pan de code vba

Salut Gorfael et le forum,

Désolé pour le fichier, il a été modifié quand je l'ai enregistré en mode compatibilité avec office2003, j'ai remis le fichier original.
Voir PJ
Merci.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
369
Réponses
4
Affichages
388
Réponses
6
Affichages
396
Réponses
32
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…