Recherchev Macro Cellule non vide

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

  • Recherchev_macro.xls
    17 KB · Affichages: 93
  • Recherchev_macro.xls
    17 KB · Affichages: 97
  • Recherchev_macro.xls
    17 KB · Affichages: 98

Robert

XLDnaute Barbatruc
Repose en paix
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

  • liquoreux_v01.xls
    23.5 KB · Affichages: 106
  • liquoreux_v01.xls
    23.5 KB · Affichages: 111
  • liquoreux_v01.xls
    23.5 KB · Affichages: 113
Dernière édition:

job75

XLDnaute Barbatruc
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+
 

liquoreux

XLDnaute Junior
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.
 

Robert

XLDnaute Barbatruc
Repose en paix
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

  • liquoreux_v01.xls
    23.5 KB · Affichages: 82
  • liquoreux_v01.xls
    23.5 KB · Affichages: 88
  • liquoreux_v01.xls
    23.5 KB · Affichages: 87
Dernière édition:

liquoreux

XLDnaute Junior
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.
 

liquoreux

XLDnaute Junior
Re : Recherchev Macro Cellule non vide

Ok ça fonctionne, fallait juste que je valide.

Une dernière chose:rolleyes:, 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
 

Lii

XLDnaute Impliqué
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

  • FIND(VBA).zip
    6.1 KB · Affichages: 47

job75

XLDnaute Barbatruc
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

  • Recherchev_macro(2).xls
    38 KB · Affichages: 79
  • Recherchev_macro(2).xls
    38 KB · Affichages: 77
  • Recherchev_macro(2).xls
    38 KB · Affichages: 78

job75

XLDnaute Barbatruc
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

  • Recherchev_macro(3).xls
    33.5 KB · Affichages: 74

liquoreux

XLDnaute Junior
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!:D Mais vous êtes trop forts:eek:

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

  • Recherchev_macro.xls
    21 KB · Affichages: 74
  • Recherchev_macro.xls
    21 KB · Affichages: 80
  • Recherchev_macro.xls
    21 KB · Affichages: 81

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 756
Messages
2 091 735
Membres
105 060
dernier inscrit
DEDJAN Gaston