Avec VLOOKUP (recherchev), les formats sont oubliés !!!

jjjjjanis

XLDnaute Nouveau
Bonjour !
J'ai désespérement besoin de votre aide !!!! :(

J'ai créé un fichier avec liste déroulante et renvoi sur un tableau avec vlookup (recherchev). (oui mon excel au boulot est en anglais... :p)

Dans cette feuille de calcul, les données vont être cherchées dans un tableau qui contient des tarifs avec différentes devises de toute l'europe. Lorsque j'ai entré les données, je changeais le format des cellules en fonction de la devise à appliquer (format cellule, monétaire etc.)

Et... Dans mon nouveau tableau, lorsqu'Excel va chercher les données avec vlookup, il ne m'inscrit que les chiffres, sans les devises. :confused:
Et sans ça, ce tableau n'a aucun sens !!!!

J'ai essayé de faire un collage spécial de mes données avec "copier valeur et format" et ca ne change rien dans mon tableau final...

Avez vous des solutions ???

Merci beaucoup pour votre aide.
 

jjjjjanis

XLDnaute Nouveau
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Bonjour,
regarde du côté de la fonction TEXTE(ta_Formule;Format_texte).
A+

Salut David,
Merci pour ton aide.

Alors j'écoute ton conseil, et je tape la formule :

= TEXTE (=VLOOKUP(C4,Sheet1!A50:Y97,5,FALSE); Etlàjetapequoi?)

Parce qu'en fait ce que je voudrais comme (mal) expliqué plus haut, c'est qu'il recopie la cellule avec son format...
 

david84

XLDnaute Barbatruc
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Re
regarde l'aide d'Excel sur cette fonction (touche F1 du clavier) :
Code:
=TEXTE(VLOOKUP(C4,Sheet1!A50:Y97,5,FALSE);"format_choisi")
Si pas cela, fournir un petit fichier avec ton exemple.
A+
 

jjjjjanis

XLDnaute Nouveau
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Re
regarde l'aide d'Excel sur cette fonction (touche F1 du clavier) :
Code:
=TEXTE(VLOOKUP(C4,Sheet1!A50:Y97,5,FALSE);"format_choisi")
Si pas cela, fournir un petit fichier avec ton exemple.
A+

Bonsoir David, je me suis peut être mal exprimée, mais je ne veux pas un format spécial que j'aurais choisi, je veux tout simplement qu'il me reprenne le format dans le tableau de base ou il va chercher les informations.
J'ai attaché un fichier (simplifié) pour plus de compréhension. Le feuillet "sheet1" contient les infos de base, avec en jaune les cellules contenant des montants formatés avec des devises.
Dans le feuillet "europe", le tableau final, ou l'on choisi par une liste déroulante la ville dont on veut voir les tariffs, et les montants qui s'inscrivent dans les cases (en rose), et là on voit bien que les montants sont bien affichés mais sans les devises !!!
Donc j'aimerais tout simplement qu'il me copie les formats lorsqu'il va chercher les données... Alors ???? Une petite aide ????





Bonjour Jacques, je te remercie pour ton message, j'avais déjà vu ton site (je l'ai même mis dans mes favoris !), cependant, je sais pas si c'est des macros ou du VBA, mais je n'y comprends pas grand chose, pour pas dire rien du tout. cela dit je suis super intéressée par tout ça (j'adore excel et les gens me prennent pour une folle), et je compte bien m'y mettre, c'est juste que ma demande est assez urgente puisque c'est pour le boulot, et qu'il faut que je rende ce tableau rapidement...
Merci !!
 

Pièces jointes

  • tariffs2012.xls
    57 KB · Affichages: 90

hoerwind

XLDnaute Barbatruc
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Bonjour, salut les autres,

Une formule ne peut renvoyer un format.
Le résultat renvoyé par une formule sera au format de la cellule contenant la formule et non celui de la cellule source.

Une façon de faire serait de saisir la valeur dans la cellule source au format texte, avec la devise.
La formule renverra la valeur et la devise.
Ceci peut poser problème lors d'éventuels calculs ultérieurs, mais comme plusieurs devises sont présentes dans la même colonne, ces problèmes sont limités et pourront être contournés lors de ces calculs.

Vois la pièce jointe.
 

Pièces jointes

  • Tariffs2012V2.xls
    54.5 KB · Affichages: 71

Modeste

XLDnaute Barbatruc
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Bonjour jjjjjanis, David, JB, hoerwind,

D'accord avec tout ce qui a été dit jusque là ... un essai par macro, donc (voir, en pièce jointe, le code dans l'Objet "Sheet3")
 

Pièces jointes

  • tariffs2012(1).xls
    62.5 KB · Affichages: 81
  • tariffs2012(1).xls
    62.5 KB · Affichages: 84
  • tariffs2012(1).xls
    62.5 KB · Affichages: 87

jjjjjanis

XLDnaute Nouveau
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Salut à tous,

@Hoerwind, merci pour ton idée, je pense que ça sera le plus simple.
J'avais pensé à quelque chose de ce genre, mais vu que tout est formaté et que ca serait trop long de retaper, j'avais essayé de faire un copier coller de tout, avec un collage spécial pour qu'il me garde les devises, mais j'ai pas réussi.

@Modeste, mais... c'est de la magie !!!
Plus de formules dans les cellules !!!! Je suis complètement paumée.
Déjà j'ai mis un quart d'heure à trouver l'objet du Sheet3.
je suis allée dans VBA au hasard et j'ai trouvé. c'est bien ça :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$3" Then Exit Sub
Set ville = Sheets("Sheet1").Range("A7:A" & Sheets("sheet1").Range("A65000").End(xlUp).Row).Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not ville Is Nothing Then
ville.Offset(, 10).Resize(1, 2).Copy [H8].Resize(1, 2)
ville.Offset(, 18).Resize(1, 2).Copy [H14].Resize(1, 2)
End If
Application.CutCopyMode = False
End Sub

Ca serait possible de traduire ce langage ???
Juste un peu ? Les bases ? J'ai rien compris.
Surtout qu'à aucun moment y a marqué "format"... !;))
 

Modeste

XLDnaute Barbatruc
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Re-bonjour jjjjjanis,

jjjjjanis à dit:
mais... c'est de la magie !!!
Absolument! ... et tu en connais beaucoup qui livrent leur "truc"!?

jjjjjanis à dit:
Déjà j'ai mis un quart d'heure à trouver l'objet du Sheet3
... Comme il y avait déjà des "traces" de code dans le fichier, je ne me suis pas demandé si elles étaient de toi.

jjjjjanis à dit:
Ca serait possible de traduire ce langage ???
... Commentaires en vert ci-dessous (en langage "familier")
VB:
Private Sub Worksheet_Change(ByVal Target As Range) 'quand le contenu d'une cellule de la feuille est modifié
    If Target.Address <> "$C$3" Then Exit Sub 's'il ne s'agit pas de la cellule C3, on quitte la procédure
    Set ville = Sheets("Sheet1").Range("A7:A" & Sheets("sheet1").Range("A65000").End(xlUp).Row).Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
    'on cherche en colonne A de la feuil1 le nom de ville sélectionné en C3
    If Not ville Is Nothing Then 'si la ville a bien été trouvée
        ville.Offset(, 10).Resize(1, 2).Copy [H8].Resize(1, 2) 'au départ de la cellule en feuil1, colonne A où la ville a été trouvée, on "décale" de 10 colonnes à droite (colonne K) et on copie la cellule ainsi que sa voisine. On colle en H8 et sa voisine de droite
        ville.Offset(, 18).Resize(1, 2).Copy [H14].Resize(1, 2) 'idem avec les colonnes S et T
    End If
    Application.CutCopyMode = False 'annule le mode "copie" et la marque de sélection
End Sub
... Dis-nous si c'est plus clair ... ou "moins pire" ;) (tu as raison sur un point au moins: la proposition d'hoerwind est plus simple :D)
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Bonjour,

Fonction perso pour remplacer RechercheV()
-Affiche le nombre dans la cellule
-Masque la cellule avec un commentaire qui contient le nombre+format
-On peut effectuer des calculs sur le résultat qui est numérique
-Si le prix est modifié dans Sheet1, il y a mise à jour du résultat.

Code:
Function rechV(quoi, champ, col)
  Application.Volatile
  Set f = Sheets(Application.Caller.Parent.Name)
  cel = Application.Caller.Address
  p = Application.Match(quoi, Application.Index(champ, , 1), 0)
  rechV = champ.Cells(p, col).Text
     With f.Range(cel)
      If .Comment Is Nothing Then .AddComment
       .Comment.Shape.Width = .Width
       .Comment.Shape.Height = .Height
       .Comment.Shape.Left = .Left
       .Comment.Shape.Top = .Top
       .Comment.Visible = True
       .Comment.Text Text:=champ.Cells(p, col).Text
     End With
  rechV = champ.Cells(p, col)
End Function

http://boisgontierjacques.free.fr/fichiers/fonctionsperso/FonctionRechv2.xls

@Modeste
Si on modifie les prix dans la BD, il n'y a pas Maj

JB
 

Pièces jointes

  • Copie de tariffs2012-1.xls
    72.5 KB · Affichages: 74
Dernière édition:

jjjjjanis

XLDnaute Nouveau
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

... Dis-nous si c'est plus clair ... ou "moins pire" ;) (tu as raison sur un point au moins: la proposition d'hoerwind est plus simple :D)

Pffffff... je sais pas. j'ai l'impression de plus rien comprendre...
tous ces caractères, ces signes de ponctuation, ces espaces...
Comprends rien.


@Modeste
@BoisGontier

Je suis complètement impressionnée.

Est ce que ces “objets”, si c’est comme ça qu’on les appelle, sont enregistrés définitivement, et elles apparaissent à chaque fois qu’on ouvre un classeur ?? Il suffirait juste de les activer ? parce que j’en ai plein dans mon fichier, et des trucs que je sais pas d’où ils sortent ???!!!! Le fichier était vierge à la base.

J’ai une autre question : ce langage, vous le connaissez, avec toute la ponctuation et les caractères spéciaux, ou bien vous entrez des données dans le petit tableau à droite en bas, et il sort (à peu près) (lol) ce langage ??

En tous cas, je suis impressionnée et passionnée par les capacités de ce logiciel et je vais pas lâcher l’affaire !!!

Et une dernière chose, disons que... si j'ai envie d'essayer de mieux comprendre ce langage, vous me conseilleriez de commencer par quoi ?
 

Modeste

XLDnaute Barbatruc
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

re²,

BOISGONTIER à dit:
@Modeste
Si on modifie les prix dans la BD, il n'y a pas Maj
... Eh ben ... Y'a qu'à interdire la mise à jour des prix! :eek:
(ou alors ajouter un bout de la procédure dans WorkSheet_Activate ... mais ta fonction personnalisée fait le travail, j'en suis pleinement conscient :))


Pffffff... je sais pas. j'ai l'impression de plus rien comprendre...
tous ces caractères, ces signes de ponctuation, ces espaces...
Ne t'inquiète pas trop, jjjjjanis: ça t'est déjà arrivé (mais tu ne t'en souviens peut-être pas) vers 5-6 ans, quand tu as appris à écrire. Les deux apprentissages demandent du temps!

jjjjjanis à dit:
Est ce que ces “objets”, si c’est comme ça qu’on les appelle, sont enregistrés définitivement, et elles apparaissent à chaque fois qu’on ouvre un classeur ??
Ouvre un nouveau classeur et appuie ensuite sur Alt+F11. Tu devrais retrouver les "Objets" relatifs aux 3 feuilles par défaut de ton classeur. Dans un classeur vierge, il ne devrait pas y avoir de code.

jjjjjanis à dit:
que j’en ai plein dans mon fichier, et des trucs que je sais pas d’où ils sortent ???!!!! Le fichier était vierge à la base.
Dans le fichier que tu as déposé, au départ, il y a 2 "Modules standards" (le premier est vide de code, le second contient le nom d'une procédure et -en commentaire- le nom de la personne qui en était l'auteur)

jjjjjanis à dit:
ce langage, vous le connaissez, avec toute la ponctuation et les caractères spéciaux?
Moi je l'apprends ... JB doit le parler depuis qu'il est tout petit :)

jjjjjanis à dit:
je vais pas lâcher l’affaire !!!
C'est le mieux que tu aies à faire!

jjjjjanis à dit:
si j'ai envie d'essayer de mieux comprendre ce langage, vous me conseilleriez de commencer par quoi ?
Une petite recherche sur le présent forum, une consultation de cet autre site qui est déjà dans tes favoris ;), l'utilisation de l'enregistreur de macros à tes heures perdus, la consultation assidue de l'aide en ligne, etc.

Bonnes recherches, bon travail et ... bon amusement!
 

job75

XLDnaute Barbatruc
Re : Avec VLOOKUP (recherchev), les formats sont oubliés !!!

Bonjour jjjjjanis, le fil,

Une autre solution avec cette macro dans Module1 :

Code:
Sub FormatVLookUp()
Dim cel As Range, F$, s, rech, plage As Range, col%, p%, lig
Application.ScreenUpdating = False
On Error Resume Next
For Each cel In Cells.SpecialCells(xlCellTypeFormulas)
  F = cel.Formula
  If F Like "=VLOOKUP*" Then
    s = Split(F, ",")
    rech = Evaluate(Mid(s(0), 10, 99))
    Set plage = Range(s(1))
    col = Replace(s(2), ")", "")
    If UBound(s) = 3 Then p = Replace(s(3), ")", "") Else p = 1
    lig = Application.Match(rech, plage.Columns(1), p)
    cel.NumberFormat = "General"
    cel.NumberFormat = plage.Cells(lig, col).NumberFormat
  End If
Next
End Sub
La macro va chercher les informations dans la formule VLOOKUP (RECHERCHEV) elle même.

Elle est lancée par cette macro dans le code de la feuille Europe :

Code:
Private Sub Worksheet_Calculate()
FormatVLookUp
End Sub
Notez que l'évènement Calculate se crée quand une formule se recalcule, en particulier quand les prix sont modifiés en Sheet1.

Fichier joint.

Edit : JB m'a fait remarquer que j'avais oublié la parenthèse ")" dans s(3) - ou s(2) - je corrige la macro.

A+
 

Pièces jointes

  • tariffs2012(1).xls
    64.5 KB · Affichages: 71
  • tariffs2012(1).xls
    64.5 KB · Affichages: 77
  • tariffs2012(1).xls
    64.5 KB · Affichages: 78
Dernière édition:

Discussions similaires

Réponses
7
Affichages
506

Statistiques des forums

Discussions
312 755
Messages
2 091 706
Membres
105 052
dernier inscrit
HAMOUD