2 questions (Mise en forme de cellule & conserver des données)

Frankc

XLDnaute Nouveau
Bonjour à tous!

Je suis nouveau sur ce site/forum. Celui-ci me semble très intéressant car beaucoup de personnes semblent y participer. J'ai des connaissances intermédiaire en Excel et je souhaite augmenter mon niveau de connaissance sur cette merveilleuse application.

Ainsi, j'ai commencé à travailler sur un document pour un ami et j'ai quelques questions auquel j'ai besoin de réponse pour savoir si ce qu'il souhaite faire est possible. Donc si vous le permettez je vais vous poser mes questions, auxquels j'espère que l'on aura réponse car jusqu'à maintenant mes recherches sont infructueuses.

Voici donc ma première question;
Contexte : Dans ma cellule A2 je recherche, à l'aide de la fonction "recherchev", ce qui est écrit dans la cellule A1 afin que excel retourne, dans la cellule A2, le résultat trouvé dans une colonne spécifique situé dans une feuille différente. Mais voilà, j'aimerais savoir s'il serait possible qu'en plus de retourner la valeur, je puisse conserver la mise en forme de la cellule où la valeur à été retrouvé et ainsi avoir la même mise en forme ma cellule A2 ?

Ma deuxième question, j'ai trouvé quelques informations sur le net mais rien qui s'applique à mon cas... J'aimerais savoir s'il est possible qu'à chaque fois qu'une entrée est modifié dans une cellule, l'entrée précédente est automatiquement copié dans une autre feuille. Je souhaite ainsi avoir un "log" des données entrés sur des cellule spécifiques afin de pouvoir par la suite créer des indicateurs de performances. Si c'est plus facile, cela pourrait aussi être de trouver une façon de recopier le contenu à un autre endroit à chaque fois qu'une nouvelle entrée est effectué sur une cellule spécifique.

Merci pour votre aide, en espérant que mes explications soient suffisamment claires.
 

Frankc

XLDnaute Nouveau
Re : 2 questions (Mise en forme de cellule & conserver des données)

Re Frankc, salut Jean-Noël,



Il faut que Feuil1!A1 soit dans la plage autorisée.

Donc en 2ème ligne de la macro remplacer [A2:A65536] par [A1:A65536], ou par Columns("A") si l'on préfère.

Dans peu de temps ce genre de chose sera évident pour vous.

A+

Ok génial ça fonctionne! Je commence à comprendre petit à petit!
Que doit-on changer au code VB si on veut qu'en feuil1!C1 j'obtienne ce qui est dans ma 4ième colonne de ma Feuil2 ?

En y allant en étape ça m'aide à mieux comprendre le processus que tu fais pour obtenir le résultat. Je m'y connais en excel mais en VB aucunement! :s
 

job75

XLDnaute Barbatruc
Re : 2 questions (Mise en forme de cellule & conserver des données)

Re,

Et allez, zou !

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Columns("A"))
If Target Is Nothing Then Exit Sub
Dim ref As Range
For Each Target In Target
  Set ref = [Choix].Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
  If ref Is Nothing Then
    Target.Offset(, 1).Resize(, 2).Clear
  Else
    Union(ref.Offset(, 1), ref.Offset(, 3)).Copy Target.Offset(, 1)
  End If
Next
End Sub

Edit : j'ai un peu "sophistiqué" :

Union(ref.Offset(, 1), ref.Offset(, 3)).Copy Target.Offset(, 1)

mais c'est la même chose que :

ref.Offset(, 1).Copy Target.Offset(, 1)
ref.Offset(, 3).Copy Target.Offset(, 2)


A+
 

Pièces jointes

  • exemplefichier(1).xls
    39 KB · Affichages: 53
  • exemplefichier(1).xls
    39 KB · Affichages: 49
  • exemplefichier(1).xls
    39 KB · Affichages: 44

Frankc

XLDnaute Nouveau
Re : 2 questions (Mise en forme de cellule & conserver des données)

Bonjour à nouveau!

Désolé d'avoir donné aucun signe de vie depuis une dizaine de jours, j'ai été passablement occupé pendant les fêtes et j'ai eu un petit problème de santé m'ayant éloigné de mes projets pendant quelques jours.

Je comprends de mieux en mieux le principe, mais comme je n'en suis qu'à mes débuts du codage VB, j'ai quelques questions encore pour vous :)

Premièrement, j'ai fait quelques essaies mais ils furent non concluants, j'aimerais savoir comment je pourrai faire que ma plage [K2:K71] cherche les résultats dans une plage dont la définition du nom est autre chose que Montreal. Bref Je veux conserver le code ci-dessous, mais j'aimerais que pour K2:K71 on répète l'expérience du A2:A71 à partir d'une autre liste de données.

Deuxièmement, est-il possible que la macro vérifie les données dans un autre document, situé dans le même répertoire? Ex; si je voudrais que les données recherchés dans la définition du nom "Montreal" soit dans le document Montreal.xls ?

Finalement, existe t'il un moyen que la macro rafraîchisse les données dès l'ouverture du document plutôt que je doive manuellement modifier le contenu de ma cellule pour obtenir la dernière valeur correspondance ?

J'ai insérer le code de job75 que j'ai adapté à mon document, ainsi qu'un exemple de mon document.

Merci infiniement! :)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, [A2:A71])
If Target Is Nothing Then Exit Sub
Dim ref As Range
For Each Target In Target
  Set ref = [Montreal].Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
  If ref Is Nothing Then
    Target.Offset(, 1).Clear
  Else
    ref.Offset(, 1).Copy Target.Offset(, 1)
  End If
Next
End Sub
 

Pièces jointes

  • exemple1.xls
    40 KB · Affichages: 62
  • exemple.xlsm
    17.9 KB · Affichages: 50
  • exemple1.xls
    40 KB · Affichages: 57
  • exemple.xlsm
    17.9 KB · Affichages: 57
  • exemple1.xls
    40 KB · Affichages: 53
  • exemple.xlsm
    17.9 KB · Affichages: 58

Frankc

XLDnaute Nouveau
Re : 2 questions (Mise en forme de cellule & conserver des données)

J'ai modifié mon document exemple afin de donner une meilleure idée de ce que je cherche à faire.

Merci :)

P.S. J'ai joint 2 documents car je ne suis pas certain que l'on peut ouvrir les .xlsm sous 2003.
 

Pièces jointes

  • exemple1.xls
    43.5 KB · Affichages: 53
  • exemple.xlsm
    19.6 KB · Affichages: 50
  • exemple1.xls
    43.5 KB · Affichages: 53
  • exemple.xlsm
    19.6 KB · Affichages: 50
  • exemple1.xls
    43.5 KB · Affichages: 56
  • exemple.xlsm
    19.6 KB · Affichages: 60

job75

XLDnaute Barbatruc
Re : 2 questions (Mise en forme de cellule & conserver des données)

Bonjour Frankc, le forum,

Vous recherchez les difficultés : cellules vides, et surtout cellules fusionnées...

Donc la 1ère chose a été de défusionner les cellules dans les feuilles Montreal et Vancouver.

Ensuite, cette macro (paramétrée) dans Module1 :
Code:
Sub Copier(Target As Range, Plage As Range, PlageRecherche As Range)
Dim T As Range, ref As Range
Set T = Intersect(Target, Plage)
If T Is Nothing Then Exit Sub
For Each T In T
  Set ref = PlageRecherche.Find(T, LookIn:=xlValues, LookAt:=xlWhole)
  If ref Is Nothing Or IsEmpty(T) Then
    T.Offset(, 1).Clear
  Else
    ref.Offset(, 1).Copy T.Offset(, 1)
  End If
Next
End Sub

Cette macro dans le code de la feuille Capchart :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Copier Target, [A3:A71], [Montreal]
Copier Target, [K3:K71], [Vancouver]
End Sub

Et pour terminer, cette macro dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
With Sheets("Capchart")
  Copier .[A3:A71], .[A3:A71], [Montreal]
  Copier .[K3:K71], .[K3:K71], [Vancouver]
End With
Me.Saved = True 'évite le message à la fermeture
End Sub

Fichier joint.

Je vous souhaite une bonne et heureuse année 2011.

Edit 1 : les plages [Montreal] et [Vancouver] peuvent parfaitement se trouver dans un autre classeur.

Il faut alors préciser le classeur et la feuille :

Workbooks("TOTO.xls").Sheets("Montreal").[Montreal]
Workbooks("TOTO.xls").Sheets("Vancouver").[Vancouver]


Le classeur TOTO.xls doit être ouvert en premier.

On peut aussi l'ouvrir avec la 3ème macro, voyez comment sur le forum.

Edit 2 : ajouté dans la macro Workbook_Open :

Me.Saved = True 'évite le message à la fermeture

A+
 

Pièces jointes

  • exemple(1).zip
    17.3 KB · Affichages: 26
  • exemple(1).zip
    17.3 KB · Affichages: 36
  • exemple(1).zip
    17.3 KB · Affichages: 37
Dernière édition:

job75

XLDnaute Barbatruc
Re : 2 questions (Mise en forme de cellule & conserver des données)

Re,

J'avais testé le fichier du post précédent sur un ordi d'emprunt avec Excel 97.

Sur cette version, il était indispensable de défusionner les cellules.

Je viens de retester sur un autre ordi avec Excel 2010.

Et là il n'est plus nécessaire de défusionner les cellules...

A+
 

Discussions similaires