Recherchev Macro Cellule non vide

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 !

liquoreux

XLDnaute Junior
Bonjour

Thème maintes fois abordé de la fonction recherchev sous macro.

Je cherche à obtenir une macro de recherchev fonctionnant de la façon suivante : à chaque fois qu'une cellule de la colonne intitulée "CODE POSTAL" est remplie par un code postal, la macro remplit la cellule correspondante dans la colonne intitulée "BUREAU DISTRIBUTEUR".

Si la cellule de la colonne "CODE POSTAL" est vide, la cellule de droite de la collone "BUREAU DISTRIBUTEUR" reste vide.

Je ne souhaites pas utilisé la fonction recherchev (...).

J'insiste sur les intitulés car je ne souhaite pas non plus que la macro soit figée à des numéros de colonnes ou à leurs lettres correspondantes (A, B, C, ...).

Merci beaucoup pour votre aide.
 

Pièces jointes

Re : Recherchev Macro Cellule non vide

Bonjour Liquoreux, bonjour le forum,

En pièce jointe une proposition avec la macro événementielle Change. Tape un code dans la colonne A, si il existe dans l'onglet CODEPOSTAUX, la ville s'affiche à coté, sinon rien ne s'afiche...

Édition :

Pour que le code fonctionne quelle que soit la colonne, supprime la première ligne :
Code:
If Target.Column <> 1 Then Exit Sub 'si le changement à lieu ailleurs qu'en colonne A, sort de la procédure
 

Pièces jointes

Dernière édition:
Re : Recherchev Macro Cellule non vide

Bonjour liquoreux,

Je ne vois pas pourquoi il y a cette validation de données en colonne A de la feuille SAISIE... Virez-la ou définissez-la autrement !!

Et voyez avec cette macro dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim txt$
On Error Resume Next
If Application.Trim(Cells(1, Target.Column)) <> "CODE POSTAL" Then Exit Sub
txt = Application.VLookup(Target, Sheets("CODEPOSTAUX").Range("A:B"), 2, 0)
Cells(Target.Row, Application.Match("BUREAU DISTRIBUTEUR", Rows(1), 0)) = txt
End Sub

Edit : salut Robert, pas rafraîchi...

A+
 
Re : Recherchev Macro Cellule non vide

Je vous remercie pour votre réactivité.

J'ai enlevé la validation et mis la macro dans le code de la feuille.

La première fonctionne à condition que j'efface les intitulés des colonnes ce que je ne souhaite pas. Par contre, elle me copie le contenu de la première cellule sur toute la colonne B ce qui ne correspond pas à ce que je recherche.

Quant à la deuxième macro elle ne fonctionne pas. Ou alors j'ai loupé quelque chose!

J'ai besoin des intitulés de colonne dans la ligne 1.
A chaque code postal à droite doit correspondre la ville adéquate à gauche (via la feuille "CODEPOSTAUX").

Merci pour votre aide.
 
Re : Recherchev Macro Cellule non vide

Bonjour le fil, bonjour le forum,

Comprends pas ton problème Liquoreux ! J'ai viré la validation de données et essayé les deux macros avec les intitulés de colonnes et les deux macos fonctionnent parfaitement chez moi...

Édition :

Voilà le fichier à nouveau mais pourquoi ne pas le retélécharger à partir de ma première réponse ???...
 

Pièces jointes

Dernière édition:
Re : Recherchev Macro Cellule non vide

Moi non plus je ne comprends pas : ce qui fonctionne chez vous ne fonctionne pas chez moi.

J'ai fait un clic droit sur l'onglet Saisie et coché Visualiser le code

J'ai copié la macro dans le code de la feuille.

1ère macro : fonctionnement normal à condition que j'efface la première ligne + le problème de recherche évoqué (ne recherche pas mais recopie la première cellule de la colonne B).

2ème macro : rien.
En effaçant la 1ère ligne : rien
En mettant le nom des communes et en effaçant les codes postaux : rien
En remettant la 1ère ligne : rien

Je ne vois pas ce que je peux faire d'autre!

Je suis sous Excel 2003.

Robert, pouvez-vous me remettre votre fichier?

Merci.
 
Re : Recherchev Macro Cellule non vide

Ok ça fonctionne, fallait juste que je valide.

Une dernière chose🙄, pourriez vous inverser afin que l'entrée d'une commune puisse génèrer un code postal (parce que je me suis rendu compte que plusieurs communes ont le même code postal!!!).
Désolé.

Merci
 
Re : Recherchev Macro Cellule non vide

Bonjour,

...
J'insiste sur les intitulés car je ne souhaite pas non plus que la macro soit figée à des numéros de colonnes ou à leurs lettres correspondantes (A, B, C, ...).
...
C'est assez vague.
Une adaptation du code de Robert.
A choisir, je pense qu'il préférerait savourer un grand cognac que boire du petit lait 😉
 

Pièces jointes

Re : Recherchev Macro Cellule non vide

Re, salut Lii,

Cette macro marche dans les 2 sens 🙂

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col1 As Range, col2 As Range, ref As Range, txt$
On Error Resume Next
Set col1 = Rows(1).Find("CODE POSTAL", LookIn:=xlFormulas, LookAt:=xlPart).Offset(1).Resize(Rows.Count - 1)
Set col2 = Rows(1).Find("BUREAU DISTRIBUTEUR").Offset(1).Resize(Rows.Count - 1)
If Intersect(Target, Union(col1, col2)) Is Nothing Then Exit Sub
With Sheets("CODEPOSTAUX")
  Set ref = .Range("A:B").Find(Target, LookAt:=xlWhole)
  If IsNumeric(Target) And Not Intersect(Target, col1) Is Nothing Then
    txt = .Cells(ref.Row, 2)
  ElseIf Not IsNumeric(Target) And Not Intersect(Target, col2) Is Nothing Then
    txt = .Cells(ref.Row, 1)
  End If
End With
Application.EnableEvents = False
Cells(Target.Row, IIf(Intersect(Target, col1) Is Nothing, col1.Column, col2.Column)) = txt
Application.EnableEvents = True
End Sub

A+
 

Pièces jointes

Re : Recherchev Macro Cellule non vide

Re,

Dans le sens commune => code postal, c'est bien sûr plus simple :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Long, txt$
On Error Resume Next
If Application.Trim(Cells(1, Target.Column)) <> "BUREAU DISTRIBUTEUR" Then Exit Sub
lig = Application.Match(Target, Sheets("CODEPOSTAUX").Columns(2), 0)
txt = Sheets("CODEPOSTAUX").Cells(lig, 1)
Cells(Target.Row, Application.Match("*CODE POSTAL*", Rows(1), 0)) = txt
End Sub

A+
 

Pièces jointes

Re : Recherchev Macro Cellule non vide

Merci c'est super toutes les macros fonctionnent.
Merci beaucoup.

La macro de Lii m'a donné de nouvelles idées.
J'abuse de votre temps, je sais!😀 Mais vous êtes trop forts😱

Pouvez vous intégrer la formule erreur de Lii dans la macro fonctionnant dans les deux sens ?

Est-il possible de créer également une fenêtre qui apparaît chaque fois qu'il y a doublon dans la liste des codes postaux en proposant un choix?

Exemple :
Il existe deux communes Abancourt, chacune avec un code postal propre.
La fenêtre proposerait les deux codes postaux.

Inversement le code postal 1100 renvoit à 6 communes (Apremont, Arbent, Bouvent, Géovreisset, Oyonnax, Veyziat).
La fenêtre proposerait les 6 communes

A chaque fois l'utilisateur pourra cocher le bon choix (selon lui) qui s'intègrera dans la cellule correspondante.


Encore merci pour votre aide.
 

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
142
Réponses
10
Affichages
511
Réponses
3
Affichages
248
Retour