Recherche d'une valeur dans une colonne et ajout d'un commentaire dans la colonn

Résolu
BAUHAUS44 Messages postés 50 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 17 juillet 2010 - 3 sept. 2006 à 22:17
BAUHAUS44 Messages postés 50 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 17 juillet 2010 - 4 sept. 2006 à 16:14
Bonjour, je travaille sur un ficher excel à partir duquel je fais une recherche automatique d'une valeur "X" dans la colonne A et lorsque cette valeur "X" est trouvée je souhaiterais qu'apparaisse le commentaire "OK" dans la colonne E de cette même ligne. J'ai beau cherché mais je ne trouve pas. Quelqu'un aurait une idée de la syntaxe pour mettre le commentaire "OK" dans la colonne F de la ligne contenant la valeur attendue ? Merci d'avance à ceux qui pourront m'aider

15 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 sept. 2006 à 14:41
Je reformule donc :
Ta Feuil4 est donc en quelque sorte un "moteur de recherche" : tu saisies une valeur en A2 et ça va chercher dans la Feuil2 toutes les cellules contenant cette valeur, et dans la colonne C, tu mets le contenu de la cellule E2.

Première méthode : Tout se fait en formules Excel très simplement.
Tu gardes tes cellules comme elles sont.
Dans ta feuil4, tu sélectionnes A2:E2 et tu fais, Menu\Insertion\Nom ..; je lui ai donné le nom "Test"

Ensuite, sur ta feuil2, en C2, tu mets la formule suivante :
SI(ESTERREUR(RECHERCHEV(A2;Test;5;FAUX))FAUX;RECHERCHEV(A2;Test;5;FAUX);"")
Et tu copies cette ormule jusqu'à ta cellule A97.
Voilà, c'est terminé.
A chaque fois tu vas aller modifier la cellule A2 de ta feuil4, si cette valeur existe dans la colonne A de ta Feuil2, la valeur de E2  de la Feuil4 (vous me suivez encore ? ^^) sera affichée, autrement, la cellule sera vide.
Rien de plus à faire, mise à jour dynamique, etc ...(si c'est pour faire de la mise à jour derrière, un simple copier/coller valeur peut par ex. suffire, pas besoin de s'embêter à coder)

Deuxième méthode : Avec une macro (personnellement, pour faire ce que je crois que tu tentes de faire, je n'utilises pas la méthode find)

Tu crées un bouton et tu colles ce bout de code à l'intérieur.

Dim i As Integer
'Boucle passer sur toutes les lignes de A2 à A97.
For i = 2 To 97 Step 1
    If Worksheets("Feuil2").Cells(i, 1).Value = Worksheets("Feuil4").Range("A2").Value Then
         Worksheets("Feuil2").Cells(i, 4).Value = Worksheets("Feuil4").Range("E2").Value
    End If
Next i

Voilà, si je suis encore à côté, je pars en vacances !!!

Molenn

P.S. : Si on pouvait me dire comment je peux mettre des balises pour afficher le bout de code avec les couleurs (ça existe je crois. Ne me dites pas que vous vous cassez à mettre du vert sur les lignes d'info, les IF/End If en bleu, etc ... Rassurez moi ! )
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 sept. 2006 à 00:21
Salut,

pour déplacer une cellule par rapport à une sélectionnée, voir la fonction OffSet
Ensuite, pour le commentaire, voir la syntaxe AddComment

Exemple :

Range("A10").Offset(0, 5).Select
    With Selection
        .AddComment
        .Comment.Visible = True
        .Comment.Text Text:="OK !"
    End With
End Sub

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 sept. 2006 à 09:33
Heeeu, je vais peut être dire une bêtise, mais ne serait-ce pas tout simplement une formule avec une condition logique ?
Dans ta colonne E :
SI(A1"Toto";"OK";"")

Voili, voilou.

Molenn

P.S. : Je suis étonné que Mortalino ne m'ait pas invoqué là-dessus. Tel Merlin, j'aurai pu étaler (et m'étaler ) ma science des formules
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 sept. 2006 à 09:46
Salut Molenn,

bah disons que j'imagine que sa cellule de la colonne F contient des données, avec ta fonction, "OK" se mettra dans cette cellule (et donc efface les données si la cellule en contient), alors qu'il le veut en commentaire !

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 sept. 2006 à 10:06
Ah ? Je ne l'avais pas compris comme ça moi :
"Quelqu'un aurait une idée de la syntaxe pour mettre le commentaire "OK" dans la colonne F de la ligne contenant la valeur attendue ?"
 
Je veux juste que la colonne F affiche "ok" dans la ligne où je trouve la valeur donnée. Donc la formule fait amplement l'affaire.
Mais à lui de dire.

On reparle de ton sous-forum spécial EXCEL ?

Molenn
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 sept. 2006 à 10:56
Je n'ai pas eu tant de confirmations que ça au niveau des membres, donc je n'en ai pas parlé aux admins.

Mais ce serait pas mal ! ;)

^^ effectivement, il faut voir ce que notre ami veut.

++
0
BAUHAUS44 Messages postés 50 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 17 juillet 2010
4 sept. 2006 à 11:26
Bonjour, j'ai bien reçu vos commentaires et je vous en remmercie mais maintenant mon problème est le suivant : je sais que la programmation qui suit fonctionne maintenant à la place de "Font.ColorIndex = 0" j'aimerais coller le texte préalablement copié mais je n'y arrive pas. Avez-vous une solution ? Merci d'avance.

Sheets("Feuil4").Select
If Range("A2").Value <> "" Then
Range("E2").Select
Selection.Copy
With Sheets("Feuil1").Range("A2:A97")
Set c = .Find(Sheets("Feuil4").Range("A2").Value, LookIn:=xlValues)
c.Offset(0, 2).Font.ColorIndex = 3
End With
End If
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 sept. 2006 à 13:20
J'ai rien compris à ton bout de code ^^
Qu'est-ce que tu veux obtenir ? Tu veux mettre en couleur un mot que tu as trouvé dans ta colonne ?

Je reprends :
Si ta cellule A2 n'est pas vide alors
   Sélection de E2 et copie le contenu (au passage, pour réduire ta formule, tu peux écrire : Range("E2").copy
   Cherche dans Feuil1, plage A2:A97, la valeur copiée en A2
   Change la couleur de ce qui a été trouvé.

Ce que tu veux faire : 
Coller le texte copié au préalable (donc le contenu de E2) dans la cellule où tu as trouvé le mot ?

Dans ce cas là, il ne faut pas fonctionner avec la méthode rechercher, mais avec la méthode remplacer (qui est la même, mais les options diffèrent).
Ce qui donnerait quelque chose comme :

WorkSheets("Feuil1").Range("A2:A97").Replace What:=WorkSheets("Feuil4").Range("A2").Value, Replacement:=WorkSheets("Feuil4").Range("E2").Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
  
Pris à partir de l'enregistreur de macro, à toit d'adapter à ton cas.

Pour ton code pour changer la couleur, je ne sais pas si tu l'utilises ou si c'était pour tester mais, juste pour savoir, tu sais que tu obtiens la même chose sans taper une seule ligne de code ? Ca s'appelle une mise en forme conditionnelle.

Molenn
0
BAUHAUS44 Messages postés 50 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 17 juillet 2010
4 sept. 2006 à 13:47
Je reprends à mon tour mes explications, elles ne sont forcément clairs. Si la cellule A2 de ma Feuil4 n'est pas vide (elle contient par exemple la valeur 100), alors je selection E2 de la même feuille et je la copie. Ensuite, Je vais chercher dans la Feuil2 colonne A (de A2 à A97 plus exactement) la valeur 100 et lorsque je la trouve, je colle dans la colonne C de la même ligne (contenant la valeur 100) ce qui été copié en E2 de la Feuil4. Je travaille actuellement à partir de la syntaxe code couleur car je sais qu'elle fonctionne. C'est à dire que si la cellule A2 de ma Feuil4 n'est pas vide (elle contient par exemple la valeur 100), ensuite, Je vais chercher dans la Feuil2 colonne A (de A2 à A97 plus exactement) la valeur 100 et lorsque je la trouve, je lui demande de mettre le contenu de la colonne C de la même ligne en rouge par exemple et ça fonctionne. Maintenant j'aimerais faire la même chose avec un copier/coller d'une cellule à une autre. Merci d'avance pour le coups de main. BAUHAUS44
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 sept. 2006 à 14:42
Oups, c'est Worksheets("Feuil2").Cells(i, 3).Value = Worksheets("Feuil4").Range("E2").Value et non colonne 4 pour ta colonne C.

Molenn
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 sept. 2006 à 14:48
Salut Molenn,

Pour le coup de la couleur, tu ne peux pas le faire avec des formules Excel

Soit t"as pas beaucoup de couleur à mettre, bah fait le à la main, soit tu prends une source coloration syntaxique, que tu modifies au besoin (j"en ferai une bientôt)

exemple (juste pour te faire un peu baver) :

<small>
Coloration syntaxique automatique </small>
Private Declare Function GetWindowLongA Lib "user32" _ 
  ByVal hwnd As Long, ByVal nIndex As Long) As Long 

Private Declare Function SetWindowLongA Lib "user32" _ 
  ByVal hwnd As Long, ByVal nIndex As Long, _ 
  ByVal dwNewLong As Long) As Long 

Private Declare Function FindWindowA Lib "user32" _ 
  ByVal lpClassName As String, ByVal lpWindowName As String) As Long 

    Private Sub cboMois_Change() 
Dim NumeroChoix As Byte, NumeroFeuille As Byte 

NumeroChoix = Me.cboMois.ListIndex 
NumeroFeuille = NumeroChoix + 1 
Sheets(NumeroFeuille).Select 

LigneAEcrire = Range("Lire_LigneX").Value 
Me.lblDateNico.Caption = Cells(LigneAEcrire, 1).Text & " " & _
    Cells(LigneAEcrire, 2).Text & " " & Me.cboMois.Text 
Me.lbtLieux.SetFocus 
    End Sub 

    Private Sub cbtFermer_Click() 
Unload Me 
    End Sub 

Private Sub cbtOption_Click() 
    Dim AffichageActuelleBouton As String 
AffichageActuelleBouton = Me.cbtOption.Caption 

If AffichageActuelleBouton = "Options >>" Then 
    Me.cbtOption.Caption = "<< Options" 
    Me.CommandButton1.Visible = True 
    Me.CommandButton2.Visible = True 
    Me.CommandButton3.Visible = True 
    Me.CommandButton4.Visible = True 
ElseIf AffichageActuelleBouton = "<< Options" Then 
    Me.cbtOption.Caption = "Options >>" 
    Me.CommandButton1.Visible = False 
    Me.CommandButton2.Visible = False 
    Me.CommandButton3.Visible = False 
    Me.CommandButton4.Visible = False 
End If 

End Sub

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
BAUHAUS44 Messages postés 50 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 17 juillet 2010
4 sept. 2006 à 15:25
Merci pour ton aide Molenn mais désolé, j'ai encore une dernière question. Comment dois-je faire pour créer un bouton, je n'en ai jamais utilisé en programmation ? Ebcore merci pour ton aide.
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 sept. 2006 à 15:49
Hop là : Répondu par MP


@Mortalino : je te hais !!  Il n'y a rien que je ne puisse faire en formules Excel, mais là, j'ai pas envie chercehr, c'est tout. Tant pis, je continuerai à écrire en noir, Na !

Molenn
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
4 sept. 2006 à 16:09
lol ! Tiens, essaie cette source, tu as juste les constantes de couleurs à modifier (c'est celle-là que j'utilise pour le moment).

Là pour le moment je fais mon jardin (on s'occupe comme on peut) mais après je commencerai cette source coloration syntaxique (plusieurs idées dans la tête qui me titillent depuis un moment)

Amuse toi bien.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
BAUHAUS44 Messages postés 50 Date d'inscription samedi 19 août 2006 Statut Membre Dernière intervention 17 juillet 2010
4 sept. 2006 à 16:14
Merci à tous les deux et particulièrement à Molenn car sa proposition marche du feu de dieu. BAUHAUS44
0
Rejoignez-nous