excel-commentaire calculé sur cellule

mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 10/02/2004 à 10:16


Bonjour,
questions sous excel,qui peut me dire comment je peux insérer un commentaire sur une cellule mais qui soit un calcul qui transforme une somme Euros en Francs en posant la souris sur la cellule. Soit en insérant un commentaire calculé.
Merci de vos réponses.
Merci à tous ceux qui se donnent la peine de répondre
neopro neopro
29 contributions
Membre depuis le 25/01/2004
Envoyé le 11/02/2004 à 00:25


Salut

Je met le format Euro dans la cellule A1 et je crée un commentaire dans la cellule A1
Je crée un bouton Mise à jour avec la macro suivante :

Sub Macro_Commentaire()
\'
\' Macro_Commentaire Macro en franc belge
\' Macro enregistrée le 11/02/04 par Guy Meurisse
\'
Montant_EURO = Range(\"A1\")
Montant_FB = Format((Montant_EURO * 40.3399), \"#,##0\")
Range(\"A1\").Comment.Text Text:=Montant_FB & \" FB\"

End Sub

Chaque fois que tu modifie la cellule A1, il faut cliquer sur le bouton Mise à jour
Le tout est trouver un moyen de faire exécuter la macro à chaque modification de la cellule.

A+

Guy

Guy
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 01:48


à placer dans le code de la feuille concernée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Var As String, c As Integer
c = VarType(Target)
If c > 6 Then
Var = CStr(Target.Address)
ActiveSheet.Range(Var).ClearComments
Else
Var = CStr(Target.Address)
Call Macro_Commentaire(Var)
End If
End Sub


et dans un module

Sub Macro_Commentaire(Var)
Dim Montant_EURO As String, Montant_FB As String
Montant_EURO = Range(Var)
Montant_FB = Format((Montant_EURO * 40.3399), \"#,##0\")
ActiveSheet.Range(Var).ClearComments
ActiveSheet.Range(Var).AddComment \"Montant en FB: \" & CStr(Montant_FB) & \" FB\"
End Sub


chaque fois qu\'une valeur est modifiée dans la feuille de calcul la Macro_Commentaire est appellée et exécutée, s\'il fallait traiter
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 01:50


différentes feuilles il suffit de recopier la procédure du dessus dans le code de la feuille voulue (à traiter). Ce qui rend la "fonction" un peu plus polyvalente
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 11/02/2004 à 09:20


Bonjour,
et merci à vous deux de vos réponses, mais je ne sais pas très bien programmer en VBA voire pratiquement pas, si je comprends bien coyote surdoué, je dois créer un code de programme dans la feuille et en plus un module qui remet à jour ce commentaire chque fois que les cellule sont modifiées ? Je ne sais pas si je vais y arriver !! est-ce que tu aurais déjà testé ce que tu me réponds ?
En tout cas merci m fois
Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 11/02/2004 à 10:13


Bonjour Coyote,
Suite à ta réponse je viens de créer le code dans la feuille concernée où je veux ce résultat, mais le code à créer dans le module ? où je le place à la suite du code que je viens de créer ? Je sais je suis pas douée, mais je ne connais pas grand chose à la programmation VBA (pour dire rien!), alors j\'attends ta réponse et je te remercie vivement. A+
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 11:45


tu dois aller dans le menu insertion - module ou tu fais un clic droit dans la petite fenêtre VBA VBA Project - Insertion - module et tu copie le code dans la fenêtre qui s\'ouvre à droite
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 12:02


oui, j\'ai testé.... et c\'est ainsi que je me rends compte que la fonction est valide pour toutes les cellules. Ce qui paradoxalement risque de ne pas convenir... car je suppose que ce calcul tu ne le fais que dans une colonne bien déterminée et non pas sur toute la feuille... on peut donc pour contrer cela, tester l\'adresse de target... on va admettre que tes calculs ont lieu dans la colonne C uniquement. De plus, j\'ai une erreur si on efface purement et simplement le contenu de la cellule (ah ah cette valeur null, que ferait on de nos longues soirées d\'hiver sans elle)

alors la colonne C sera decelée grâce à
Mid(Var, 2, 1) = \"C\"
et la valeur null sera traitée avec
If Target = \"\" Then
ActiveSheet.Range(Var).ClearComments
Exit Sub
End If

donc le code à placer dans le code de la feuille, complet et définitif (j\'espère) est

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Var As String, c As Integer
c = VarType(Target)
Var = CStr(Target.Address)
If Target = \"\" Then
ActiveSheet.Range(Var).ClearComments
Exit Sub
End If
If c > 2 And c < 6 And Mid(Var, 2, 1) = \"C\" Then
Call Macro_Commentaire(Var)
Else
ActiveSheet.Range(Var).ClearComments
End If
End Sub
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 12:02


à l\'avenir , restes dans le même post ...
oui, j\'ai testé.... et c\'est ainsi que je me rends compte que la fonction est valide pour toutes les cellules. Ce qui paradoxalement risque de ne pas convenir... car je suppose que ce calcul tu ne le fais que dans une colonne bien déterminée et non pas sur toute la feuille... on peut donc pour contrer cela, tester l\'adresse de target... on va admettre que tes calculs ont lieu dans la colonne C uniquement. De plus, j\'ai une erreur si on efface purement et simplement le contenu de la cellule (ah ah cette valeur null, que ferait on de nos longues soirées d\'hiver sans elle)

alors la colonne C sera decelée grâce à
Mid(Var, 2, 1) = \"C\"
et la valeur null sera traitée avec
If Target = \"\" Then
ActiveSheet.Range(Var).ClearComments
Exit Sub
End If

donc le code à placer dans le code de la feuille, complet et définitif (j\'espère) est

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Var As String, c As Integer
c = VarType(Target)
Var = CStr(Target.Address)
If Target = \"\" Then
ActiveSheet.Range(Var).ClearComments
Exit Sub
End If
If c > 2 And c < 6 And Mid(Var, 2, 1) = \"C\" Then
Call Macro_Commentaire(Var)
Else
ActiveSheet.Range(Var).ClearComments
End If
End Sub
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 11/02/2004 à 13:18


Re-bonjr Coyote,
En recopiant le module, que j'ai écrit à la suite du code de la feuille, qui est donc le module de macro_commentaire, j'ai eu une erreur de compilation sur cette ligne, donc la lgne qui suit et qui se trouve avant le End Sub ? peux-tu me dire pourquoi ?
[S]ActiveSheet.Range(Var).AddComment"Montant en F:& CStr(Montant_F)&"F"[/S]Autre chose je suis peut-être exigeante, mais cela me permettrait de savoir à quoi correspond la lgne de programme, pourrais-tu reprendre ta programmation et me porter en commentaire avant chque lgne, ce qui découle de chque lgne de programme. Je ne sais pas si tu me suis !
C'est ce que j'avais fait en formation, sur une application que l'on m'avait programmé et ceci me permet de pouvoir modifier un élément si il y a lieu de le modifier, mais si tu ne sais pas ce que ta ligne de programme va t'exécuter ceci est + compliqué. Encore merci et excuses-moi de prendre sur ton temps.
Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 11/02/2004 à 13:39


REbonjr Coyote,
Et bien ta formule fonctionne très bien j\'ai trouvé l\'erreur de recopie que j\'avais faite et j\'ai rectifié, seulement et encore une Question, je ne sais pas
1>>comment mettre la formule pour arrondir à 2 décimale derrière la virgule ,(je n\'ai pas su porter la formule d\'arrondi),
2>>que le calcul se fasse sur toutes les cellules de la colonne D
3>>si cela pouvait être en rouge !
Je pense que je suis exigeante mais tant qu\'à faire autant que ce soit parfait, en tout cas [S]Chapeau à toi COYOTE et merci mille fois [/S]!!!!!!!!
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 15:35


remplaces le module par... les4 lignes TextFrame sont personnalisables
- 3 = rouge
- Bold = gras
, tu laisses ou tu supprimes la ligne (j\'ai mis italique , on ne va pas bouder son plaisir, mais c\'est peut être moins lisible quoique, j\'ai utilisé une taille de caractère à 14 points [:D] )
Pour l\'arrondi, il suffisait de changer le modèle de format de Montant_FB

Sub Macro_Commentaire(Var)
Dim Montant_EURO As String, Montant_FB As String
Montant_EURO = Range(Var)
Montant_FB = Format((Montant_EURO * 40.3399), \"###0.00\")
ActiveSheet.Range(Var).ClearComments
ActiveSheet.Range(Var).AddComment \"Montant en FB: \" & CStr(Montant_FB) & \" FB\"

ActiveSheet.Range(Var).Comment.Shape.TextFrame.Characters.Font.ColorIndex = 3
ActiveSheet.Range(Var).Comment.Shape.TextFrame.Characters.Font.Bold = True
ActiveSheet.Range(Var).Comment.Shape.TextFrame.Characters.Font.Italic = True
ActiveSheet.Range(Var).Comment.Shape.TextFrame.Characters.Font.Size = 14

End Sub
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 15:55


avec les commentaires maintenant ....il suffit de recopier le tout dans VBE, les commentaires seront en vert

\'cette procédure est une procédure standard
\'le paramètre le plus important est Target
\'qui correspond à la cellule en cours
Private Sub Worksheet_Change(ByVal Target As Range)
\'je désigne 2 variables, les noms importe peu
\'par contre le type est important
Dim Var As String, c As Integer
\'je détermine le type de donnée que contient target
\'ça peut être un chiffre, un caractère, une date, autre
\'comme je ne veux que traiter les chiffres, il est important
\'d\'obtenir ce paramètre, sinon ça bug dans la formule de
\'multiplication, forcément. On ne multiplie pas une lettre
c = VarType(Target)
\'ensuite, il me faut l\'adresse de la cellule, pour ne
\'traiter que la colonne C et aussi pour paramètrer
\'le commentaire correspondant, si je traite D3, je dois
\'bien sûr traiter le commentaire de D3 et pas de D6
Var = CStr(Target.Address)
\'ici, il faut que je prévois le cas où on remet la cellule à blanc,
If Target = \"\" Then
\' j\'enlève le commentaire tout simplement
ActiveSheet.Range(Var).ClearComments
\'et je sors de la procédure, je n\'ai plus rien à y faire
Exit Sub
End If
\'si la cellule est de type chiffre, bon là je renvois vers l\'aide
\'places toi sur le mot VarType (plus haut)
\'tu verras que 2 est un integer, 6 un double, etc
\'je teste aussi si dans l\'adresse de target, si j\'ai la lettre D
\'pour que notre procédure ne traite que cette colonne
If c > 2 And c < 6 And Mid(Var, 2, 1) = \"D\" Then
\'j appelle la macro mise dans le module et je lui transmets Var
Call Macro_Commentaire(Var)
Else
\'si cela ne correspond pas, je nettoie les commentaires
\'si on arrive jusqu ici, remarques que la procédure va
\'se terminer toute seule
ActiveSheet.Range(Var).ClearComments
End If
End Sub


Sub Macro_Commentaire(Var)
\'ici on entre dans la procédure et l\'on est
\'accompagné avec notre adresse Var, exemple $D$4
Dim Montant_EURO As String, Montant_FB As String
\'on remplit la variable avec le contenu de Var
Montant_EURO = Range(Var)
\'on fait le calcul on formate le résultat à 2 décimales
Montant_FB = Format((Montant_EURO * 40.3399), \"###0.00\")
\'on doit enlever éventuellement un ancien commentaire
\'avant de pouvoir le remplacer sinon bug assuré
ActiveSheet.Range(Var).ClearComments
\'on ajoute le commentaire à la cellule , enfin !
ActiveSheet.Range(Var).AddComment \"Montant en FB: \" & CStr(Montant_FB) & \" FB\"
\'on formate le commentaire, d\'abord la couleur exemple 3=rouge, 5=bleu
ActiveSheet.Range(Var).Comment.Shape.TextFrame.Characters.Font.ColorIndex = 3
\'on place en gras
ActiveSheet.Range(Var).Comment.Shape.TextFrame.Characters.Font.Bold = True
\'on place en italique, pourquoi pas
ActiveSheet.Range(Var).Comment.Shape.TextFrame.Characters.Font.Italic = True
\'on place en taille 14, pour les mal-voyants, ce qui est louable
ActiveSheet.Range(Var).Comment.Shape.TextFrame.Characters.Font.Size = 14

End Sub

Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 15:58


\'traiter que la colonne C et aussi pour paramètrer

il faut bien sûr lire \'traiter que la colonne D et aussi pour paramètrer
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 11/02/2004 à 16:00


\'places toi sur le mot VarType (plus haut)

il faut compléter par :
\' et fais F1
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 11/02/2004 à 16:01


[B][/B]Coyote tu es GGGénial ,
ça fonctionne à merveille, mais si je n\'avais pas copié textuellement ce que u m\'as donné je n\'y serais pas arrivé seule.
Bravo et encore merci , peut être à une autre fois pour autre chose.
Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 12/02/2004 à 17:04


Re-bonjour Coyotte,
Alors j\'ai été un peu trop vite en testant le programme car il y a un bug qui se produit quand je recopie vers le bas la cellule où j\'ai le commentaire, car comme il s\'agit d\'un solde, je ne le recalcule en le copiant vers le bas, que lorsque je mets de nouvelles écritures ? le bog se produit donc sur la [S]ligne :[/S]
Erreur d\'éxecuton 13 Incompatibilité de type :
[S]If Target = \"\" Then[/S]
Donc j\'ai encore besoin de vous !!!!
Que dois-je faire ?
Merci Coyotte.........A+
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 12/02/2004 à 19:41


héhé, ok... je n\'avais pas testé la recopie.... bon, on s\'y prend différemment, car en fait, Target est valable pour une seule cellule car si on envoit seulement la sélection Target vaut par exemple $D$10 et le code fonctionne mais lorsque tu fais une sélection multiple (comme lorsque tu veux recopier vers le bas) Target vaut par exemple $D$10:$D$20 et donc ça bugge parce que l\'on ne peut pas vérifier si plusieurs cellules en même temps sont égales à \"\" , on doit boucler sur les différentes cellules... donc voilà, j\'ai modifié le code pour qu\'il boucle sur chaque cellule et ma foi, s\'il n\'y a qu\'une seule cellule, il boucle 1 fois (CQFD)...bref ! je vois à tes yeux ronds que tu ne comprends pas... [:D] [:D] je suis moi même épaté lorsque je me relis [:D] ...bref, je remets le nouveau code des 2 procédures ci-dessous...testes le ....et viens réclamer si tu trouves d\'autres anicorches..

Private Sub Worksheet_Change(ByVal Target As Range)
\'je désigne 2 variables, les noms importe peu
\'par contre le type est important
Dim Var As Range, c As Integer
\'je détermine le type de donnée que contient target
\'ça peut être un chiffre, un caractère, une date, autre
\'comme je ne veux que traiter les chiffres, il est important
\'d\'obtenir ce paramètre, sinon ça bug dans la formule de
\'multiplication, forcément. On ne multiplie pas une lettre
For Each Var In Range(Target.Address)
c = VarType(Var)
\'ensuite, il me faut l\'adresse de la cellule, pour ne
\'traiter que la colonne D et aussi pour paramètrer
\'le commentaire correspondant, si je traite D3, je dois
\'bien sûr traiter le commentaire de D3 et pas de D6
\'Var = CStr(Target.Address)
\'ici, il faut que je prévois le cas où on remet la cellule à blanc,
If Var = \"\" Then
\' j\'enlève le commentaire tout simplement
ActiveSheet.Range(Var).ClearComments
\'et je sors de la procédure, je n\'ai plus rien à y faire
Exit Sub
End If \'si la cellule est de type chiffre, bon là je renvois vers l\'aide
\'places toi sur le mot VarType (plus haut), fais F1
\'tu verras que 2 est un integer, 6 un double, etc
\'je teste aussi si dans l\'adresse de target, si j\'ai la lettre D
\'pour que notre procédure ne traite que cette colonne
If c > 2 And c < 6 And Mid(Var.Address, 2, 1) = \"D\" Then
\'j appelle la macro mise dans le module et je lui transmets Var
Call Macro_Commentaire(Var)
Else \'si cela ne correspond pas, je nettoie les commentaires
\'si on arrive jusqu ici, remarques que la procédure va
\'se terminer toute seule
ActiveSheet.Range(Var.Address).ClearComments
End If
Next
End Sub


Sub Macro_Commentaire(Var)
\'ici on entre dans la procédure et l\'on est
\'accompagné avec notre adresse Var, exemple $D$4
Dim Montant_EURO As String, Montant_FB As String
\'on remplit la variable avec le contenu de Var
Montant_EURO = Var
\'on fait le calcul on formate le résultat à 2 décimales
Montant_FB = Format((Montant_EURO * 40.3399), \"###0.00\")
\'on doit enlever éventuellement un ancien commentaire
\'avant de pouvoir le remplacer sinon bug assuré
ActiveSheet.Range(Var.Address).ClearComments
\'on ajoute le commentaire à la cellule , enfin !
ActiveSheet.Range(Var.Address).AddComment \"Montant en FB: \" & Chr(13) & CStr(Montant_FB) & \" FB\"
\'on formate le commentaire, d\'abord la couleur exemple 3=rouge, 5=bleu
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.ColorIndex = 3
\'on place en gras
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Bold = True
\'on place en italique, pourquoi pas
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Italic = True
\'on place en taille 14, pour les mal-voyants, ce qui est louable
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Size = 14
ActiveSheet.Range(Var.Address).Comment.Shape.Height = 40
ActiveSheet.Range(Var.Address).Comment.Shape.Width = 120
End Sub
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 12/02/2004 à 19:53


ça devient meilleur, je retrouve moi même les bugs [:D] .... voici la dernière version, car il faut prévoir aussi que tu vas remettre les cellules à rien en utilisant la multi sélection....donc je place une seconde boucle sur une variable Var1

Private Sub Worksheet_Change(ByVal Target As Range)
\'je désigne 3 variables, les noms importe peu
\'par contre le type est important
Dim Var As Range, Var1 As Range, c As Integer
\'on doit boucler même si une seule cellule est à considérer
\'car Target peut aussi bien contenir $D$3 que $D$3:$D
For Each Var In Range(Target.Address)
\'je détermine le type de donnée que contient target
\'ça peut être un chiffre, un caractère, une date, autre
\'comme je ne veux que traiter les chiffres, il est important
\'d\'obtenir ce paramètre, sinon ça bug dans la formule de
\'multiplication, forcément. On ne multiplie pas une lettre
c = VarType(Var)
\'ensuite, il me faut l\'adresse de la cellule, pour ne
\'traiter que la colonne D et aussi pour paramètrer
\'le commentaire correspondant, si je traite D3, je dois
\'bien sûr traiter le commentaire de D3 et pas de D6
\'Var = CStr(Target.Address)
\'ici, il faut que je prévois le cas où on remet la cellule à blanc,
If Var = \"\" Then
\' j\'enlève le commentaire tout simplement
For Each Var1 In Range(Target.Address)
ActiveSheet.Range(Var1.Address).ClearComments
Next
\'et je sors de la procédure, je n\'ai plus rien à y faire
Exit Sub
End If \'si la cellule est de type chiffre, bon là je renvois vers l\'aide
\'places toi sur le mot VarType (plus haut), fais F1
\'tu verras que 2 est un integer, 6 un double, etc
\'je teste aussi si dans l\'adresse de target, si j\'ai la lettre D
\'pour que notre procédure ne traite que cette colonne
If c > 2 And c < 6 And Mid(Var.Address, 2, 1) = \"D\" Then
\'j appelle la macro mise dans le module et je lui transmets Var
Call Macro_Commentaire(Var)
Else \'si cela ne correspond pas, je nettoie les commentaires
\'si on arrive jusqu ici, remarques que la procédure va
\'se terminer toute seule
ActiveSheet.Range(Var.Address).ClearComments
End If
Next
End Sub


Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 13/02/2004 à 08:34


Bonjour Coyotte,
Pris connaissance ce matin de ta réponse et je t'en remercie, j'ai de nouveau un bug que je n'avais pas avant au niveau du format ? auparavant il fonctionnait très bien!
Je t'ai donc fait la copie ci-dessous car moi j'ai des Francs et je désire le format que j'indique. Alors que se passe t'il ? et d'autre part, dans la cellule correspondante il [S]se met $D$40 D[/S] car je suis bien col D et 40 je suis sur la cellule 40 ?
Pourtant j'ai vérifié que j'ai transcris comme tu l'as porté sur le message ?
En tout cas c'est drôlement compliqué de programmer !! Je ne pense pas en faire ma tasse de thé !
Encore merci si tu peux voir cela (suis un peu enm....... non ?)

Sub Macro_commentaire(Var)
Dim Montant_Euro As String, Montant_F As String
Montant_Euro = Var
Montant_F = Format((Montant_Euro * 6.55957), "##,##0.00")
ActiveSheet.Range(Var.Address).ClearComments
ActiveSheet.Range(Var.Address).AddComment "Montant en F : " & Chr(13) & CStr(Montant_F) & "F"
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.ColorIndex = 3
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Bold = True
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Italic = True
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Size = 14
ActiveSheet.Range(Var.Address).Comment.Shape.Height = 40
ActiveSheet.Range(Var.Address).Comment.Shape.Width = 120
End Sub
Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 13/02/2004 à 12:08


Re-bjr Coyotte,
Un complément d'information ce qui apparait dans la cellue de la colonne D apparait dans toute les cellules où je clique.
En fait il indique ou on se trouve colonne ligne $G$48 etc...
Peut être cela éclairera ta lanterne !
Encore mes excuses pour ce dérangement et merci
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 13/02/2004 à 15:38


Voilà encore une bizarrerie ... j\'ai repris par un copier-coller ta fonction personnalisée en FF et ..... ça marche du premier coup, je n\'ai aucun problème et j\'obtiens bien le résultat espéré .... Je travaille avec excel XP .... (je pourrais tester le code sous Excel 97 mais seulement lundi) . Néanmoins, dans le VBE (visual basic editor) vas dans le menu outils - reférences et vérifies si tu as bien une coche dans

- Visual Basic for applications
- Microsoft Excel 10.0 Object Library (le chiffre peut être différent si tu as un excel autre que XP ; 9.0 pour excel2000; 8.0 pour excel97)
- OLE Automation
- Microsoft Office 10.0 Object Library (idem plus haut)

pour être dans la même configuration que moi

tu peux aussi tester le fichier sur mon site [LIEN]http://bipbipcoyote2000.site.voila.fr/Excel/Commentaires/Pages/Commentaires.html[/LIEN] à télécharger en bas de page (fais le avec le clic droit - enregistrer sous ... et tu l\'ouvres ensuite à partir de ton disque dur)....
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 13/02/2004 à 15:45


as tu effectivement bien changer les deux procédures, car avec la multi-sélection, j\'ai modifié les deux procédures !!!! et je parierais que tu n\'as changé que la procédure du module indépendant... tu dois aussi mettre la dernière version de la procédure que l\'on place dans la feuille.... je te conseille de commencer d\'effacer les procédures que tu as dans ton fichier, et ensuite, tu recharges les copies ci-dessous... c\'est la dernière mouture

dans la feuille ......

Private Sub Worksheet_Change(ByVal Target As Range)
\'je désigne 3 variables, les noms importe peu
\'par contre le type est important
Dim Var As Range, Var1 As Range, c As Integer
\'on doit boucler même si une seule cellule est à considérer
\'car Target peut aussi bien contenir $D$3 que $D$3:$D
For Each Var In Range(Target.Address)
\'je détermine le type de donnée que contient target
\'ça peut être un chiffre, un caractère, une date, autre
\'comme je ne veux que traiter les chiffres, il est important
\'d\'obtenir ce paramètre, sinon ça bug dans la formule de
\'multiplication, forcément. On ne multiplie pas une lettre
c = VarType(Var)
\'ensuite, il me faut l\'adresse de la cellule, pour ne
\'traiter que la colonne D et aussi pour paramètrer
\'le commentaire correspondant, si je traite D3, je dois
\'bien sûr traiter le commentaire de D3 et pas de D6
\'Var = CStr(Target.Address)
\'ici, il faut que je prévois le cas où on remet la cellule à blanc,
If Var = \"\" Then
\'il faut prévoir une seconde boucle pour nettoyer les commentaires
For Each Var1 In Range(Target.Address)
\' j\'enlève le commentaire tout simplement
ActiveSheet.Range(Var1.Address).ClearComments
Next
\'et je sors de la procédure, je n\'ai plus rien à y faire
Exit Sub
End If \'si la cellule est de type chiffre, bon là je renvois vers l\'aide
\'places toi sur le mot VarType (plus haut), fais F1
\'tu verras que 2 est un integer, 6 un double, etc
\'je teste aussi si dans l\'adresse de target, si j\'ai la lettre D
\'pour que notre procédure ne traite que cette colonne
If c > 2 And c < 6 And Mid(Var.Address, 2, 1) = \"D\" Then
\'j appelle la macro mise dans le module et je lui transmets Var
Call Macro_commentaire(Var)
Else \'si cela ne correspond pas, je nettoie les commentaires
\'si on arrive jusqu ici, remarques que la procédure va
\'se terminer toute seule
ActiveSheet.Range(Var.Address).ClearComments
End If
Next
End Sub

dans le module indépendant (c\'est déjà pour FF).....

Sub Macro_commentaire(Var)
Dim Montant_Euro As String, Montant_F As String
Montant_Euro = Var
Montant_F = Format((Montant_Euro * 6.55957), \"##,##0.00\")
ActiveSheet.Range(Var.Address).ClearComments
ActiveSheet.Range(Var.Address).AddComment \"Montant en F : \" & Chr(13) & CStr(Montant_F) & \"F\"
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.ColorIndex = 3
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Bold = True
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Italic = True
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Size = 14
ActiveSheet.Range(Var.Address).Comment.Shape.Height = 40
ActiveSheet.Range(Var.Address).Comment.Shape.Width = 120
End Sub
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 16/02/2004 à 08:17


Bonjour Coyotte,
Je ne te réponds que ce jour, car je n'ai pas internet à la maison, merci de ta réponse que j'ai eu ce matin, mais j'ai tjrs un prblm, sur la même ligne donc la ligne format[S]Montant F=.....[/S] ou je te joins la copie de la totalité du commentaire, mais par contre je n'ai plus cette erreur quand je cliquais sur n'importe quelle cellule !
Mais donc si je recopie vers le bas et bien j'ai l'erreur et le débogage m'envoie sur cette fameuse ligne de format (et le pire qui fonctionnait bien au départ car les commentaires précedents qui restent eux sur la feuille sont bons.
J'ai même essayé d'effacer des commentaires sur certaines lignes, mais ils ne se remettent pas automatiquement, c'est pour cela que j'ai essayé la recopie vers le bas qui m'a donné l'erreur.
Je te recopie aussi le code qui est dans la feuille, tu verras que c'est à l'idntique de ce que tu m'as donné !
Alors il y a qque chose mais je ne sais quoi.......pas assez forte en VBA.
Encore mes excuses et mes remerciements si tu peux voir....merci, bonne journée.

Sub Macro_commentaire(Var)
Dim Montant_Euro As String, Montant_F As String
Montant_Euro = Var
Montant_F = Format((Montant_Euro * 6.55957), "##,##0.00")
ActiveSheet.Range(Var.Address).ClearComments
ActiveSheet.Range(Var.Address).AddComment "Montant en F : " & Chr(13) & CStr(Montant_F) & "F"
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.ColorIndex = 3
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Bold = True
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Italic = True
ActiveSheet.Range(Var.Address).Comment.Shape.TextFrame.Characters.Font.Size = 14
ActiveSheet.Range(Var.Address).Comment.Shape.Height = 40
ActiveSheet.Range(Var.Address).Comment.Shape.Width = 120
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Var As Range, Var1 As Range, c As Integer
For Each Var In Range(Target.Address)
c = VarType(Var)
Var = CStr(Target.Address)
If Var = "" Then
For Each Var1 In Range(Target.Address)
ActiveSheet.Range(Var1.Address).ClearComments
Next
Exit Sub
End If
If c > 2 And c < 6 And Mid(Var.Address, 2, 1) = "D" Then
Call Macro_commentaire(Var)
Else
ActiveSheet.Range(Var.Address).ClearComments
End If
Next
End Sub



Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 16/02/2004 à 10:19


Re-bonjour Coyotte,
Je viens de refaire l'essai de la procédure sur un nouveau fichier essai et j'ai tjrs l'erreur, je ne sais pas comment il faut faire pour te joindre ce fichier sur le forum, car je vois on peut joindre des images, mais pas des fichiers ??
Si cela est possible dis le moi et je t'envoie le fichier en question tu pourras sans doute mieux voir l'erreur qui se produit ?
Encore merci et A+

Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 16/02/2004 à 10:30


re-bonjour Coyotte complément d\'infos,
Je viens de m\'apercevoir que lorsque je frappe dans[S] n\'importe quelle cellule [/S] de la feuille, que ce soit du texte ou des chiffres cela ne fonctionne pas il se met à la place le n° de colonne et le n° de ligne ?
Voilà encore une info complémentaire. A+
Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 16/02/2004 à 14:51


Re-bonjour Coyotte,
Après avoir réfléchi, je viens de trouver la solution, et voilà comment je vais procéder :
1> le solde du compte je le recopie vers le bas avant d\'y porter le commentaire, c\'est-à-dire avant de cliquer sur la cellule du solde pour lui incorporer le commentaire.
2> je reprends ton tout [S]1° code que tu m\'avais donné et qui fonctionnait très bien [/S]avant recopie(car j\'ai réfléchi le commentaire est lié à chaque cellule, donc il ne faut pas faire de recopie !
et ensuite quand je clique sur la cellule remise à jour avec les nouvelles écritures, le commentaire se place et c\'est exact.
Je pense donc que cette manière de travailler est bonne et c\'est celle que je vais utiliser grace à toi !!!!!!!!!!! Mille fois MERCI.....
et encore une fois je n\'aurais pas su faire seule je suis nulle !!!!! Bravo .
Merci bipbipcoyote.
Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 16/02/2004 à 16:04


Re-bonjour Coyotte,
Alors ceci est le dernier message sur le sujet, car j'ai recopié ton code intégralement dans un fichier essai et il fonctionne correctement et comme je le voulais c'est-à-dire en recopiant vers le bas.
Il y avait donc qque chose que j'avais mal recopié et le mieux était de tout annuler comme tu me le suggérais, une fois de + tu avais raison !!!!
Donc encore merci et je vais aller sur ton site comme tu me le conseilles, je pense y trouver une mine d'or, car je fais de l'autoformation avec excel, et je pioche des infos un peu partout mais je vois que tu es le meilleur et surtout le + efficace.
Merci et peut-être à une autre fois.
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 16/02/2004 à 19:25


ah ah, stop ! arrêtes, je vais rougir [:Z] . Disons que cette fois, j\'ai été bien inspiré...

c\'est-à-dire en recopiant vers le bas.


Il fonctionne aussi vers la droite, évidemment, pas de commentaire puisque l\'on avait décidé de travailler sur la colonne D. Néanmoins, sans les corrections de code, on aurait eu aussi le bug en travaillant dans ce sens là

Je vois que ça a phosphoré ferme [:D] [:D] . Perso, je peux consulter le net depuis mon travail, si je n\'en ai pas de trop [;)] ou alors, il faut attendre la soirée .... voilà pourquoi, tu es restée dans le \"brouillard\" sans réponse. Si tu avais suivi le lien donné le 13-02-2004 15:38 un peu plus haut, tu aurais pu télécharger le fichier exemple, le tester et ainsi découvrir plus tôt qu\'il s\'agissait sûrement d\'une erreur de manipulation; enfin, pas grave, le principal est que cela fonctionne maintenant...

et oui, la solution à ton problème est sur le net, tu as participé malgré toi à la mémoire collective et l\'on peut espérer que cela servira à d\'autres personnes [;)]

PS: j\'ai retrouvé l\'erreur que tu avais, j\'en porte certainement une part de responsabilité (j\'aurai dû te fournir un code tout propre), en fait, il ne manquait qu\'une apostrophe devant une ligne de commande que j\'ai effectivement neutralisé entre les modifications apportées... regardes bien ma ligne \' Var = CStr(Target.Address) . Il y a une apostrophe devant ce qui transforme cette ligne, non plus en code mais en remarque....En fait, cette ligne peut maintenant être totalement supprimée...En faisant des essais pour découvrir la bonne syntaxe de nouvelles lignes ou autre méthode mais ne pas perdre le travail antérieur, on place le code en remarque, cela évite de devoir tout retaper en cas de marche arrière, le copier-coller a sans doute fourché à cet endroit... [;)]
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 17/02/2004 à 07:31


Bonjour bipbipcoyote(ton prêtre nom est un peu long),
Et bien ce que tu portes dans le PS je m'en étais aperçu mais bien sur après, lorsque j'ai fait la recopie et que j'ai vérifié ton code et le mien, comme je te l'ai dit j'ai fait ce genre de commentaire au boulot sur une application, mais ce n'est pas moi qui ai écrit le code, car j'étais spécialement en formation et c'était beaucoup plus compliqué, mais de toute façon, je serais incapable de programmer en VBA, car c'est vraiment compliqué et il faut l'apprendre et le pratiquer je pense.
En tout cas encore merci et je vais aller sur ton site, car je n'ai internet, que au boulot. Donc les heures sont limitées place tout de même au travail !!!!!
En tout cas ta sympathie m'a touchée et pour une première fois que je vais sur un forum bravo à la complaisance et au dévouement pour ceux qui pédalent dans la semoule !!!!
Bravo , merci et bonne journée.
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 17/02/2004 à 17:42


ne te décourages pas pour le VBA, une fois que l\'on a compris le système , cela devient assez facile... si tu veux poursuivre ta formation on the job, voici l\'adresse d\'un forum que j\'apprécie car il est un peu moins généraliste que mémoclic [LIEN]http://www.cathyastuce.com/w-agora/index.php?site=cathyastuce&bn=[/LIEN] il est uniquement consacré aux applications ms office
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 18/02/2004 à 07:58


Bjr bipbipcoyote,
Merci de ton conseil et je vois que tu fais très souvent les réponses sur le site dont tu m'as donné l'adresse, donc si j'ai une question en VBA je pense que c'est à toi que je la poserai. Car quoique tu en penses, créer du code quand tu n'y connais rien n'est pas une mince affaire !!!
Encore merci pour ton dévouement et peut être à une autre question.
Merci à tous ceux qui se donnent la peine de répondre
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 25/02/2004 à 07:24


Bonjour Bipbipcoyotte,
Je pense que tu vas sans doute me gronder, comme je t'ai dit ou pas, je ne sais plus, j'ai construit mon fameux fichier(ou plutot tu me l'as construit de toute pièce) et je l'ai utilisé au bureau sous[S] windows 98 [/S]et chez moi j'ai [S]windows XP[/S], j'ai donc utilisé mon fichier chez moi et le commentaire ne fonctionne pas, au contraire lorsque je prends la DN cellule où figure un commentaire et que je recopie vers le bas, il me recopie bien le calcul du solde, mais pas le commentaire et il m'efface même celui de la cellule qui y figurait, mais chose curieuse il ne me dit pas qu'il y a un bug !! alors que au départ et à l'ouverture du fichier il me demande bien d'activer les macros ? Là je vois vraiment que l'informatique est compliquée ! Ne te précipites pas pour voir la question ce n'est pas urgent, car je ne peux tester que chez moi .
Excuses moi encore et bonne journée.
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 25/02/2004 à 14:02


je pense que j\'ai découvert pourquoi... tu as excel2000 ou 2002 au bureau et excel97 chez toi... (moi, c\'est l\'inverse) et j\'ai le même phénomène, j\'ai développé le code chez moi, il fonctionne, mais ici sous Excel97, il ne fonctionne pas car Excel97 ne considère pas la recopie vers le bas comme un événement \"Change\" aussi la macro n\'est pas appellée...

donc, on doit travailler sur un autre événement, et je ne vois que l\'événement selection_change, car après ta recopie vers le bas, il faudra bien que tu repointes une cellule individuelle, c\'est à ce moment là que l\'on va demander une mise à jour des cellules recopiées, mais comme on ne peut pas savoir à l\'avance combien de cellules tu auras recopié, on va faire recalculer toute la colonne....On peut abandonner l\'événement change puisque lorsque l\'on appuie sur la touche Entrée, le curseur descend d\'une case ce qui provoque aussi l\'événement SélectionChange et donc le recalcul de la colonne... En fait, d\'une version excel à l\'autre on perd un peu de temps et on sollicite un peu plus le processeur (sous Excel2000 on ne recalcule que les cellules qui se modifient, dans Excel97 on doit recalculer toute la colonne à chaque fois). revoici le code ....



Sub Macro_commentaire(var)
Dim Montant_Euro As String, Montant_F As String
Montant_Euro = var
Montant_F = Format((Montant_Euro * 6.55957), \"##,##0.00\")
ActiveSheet.Range(var.Address).ClearComments
ActiveSheet.Range(var.Address).AddComment \"Montant en F : \" & Chr(13) & CStr(Montant_F) & \"F\"
ActiveSheet.Range(var.Address).Comment.Shape.TextFrame.Characters.Font.ColorIndex = 3
ActiveSheet.Range(var.Address).Comment.Shape.TextFrame.Characters.Font.Bold = True
ActiveSheet.Range(var.Address).Comment.Shape.TextFrame.Characters.Font.Italic = True
ActiveSheet.Range(var.Address).Comment.Shape.TextFrame.Characters.Font.Size = 14
ActiveSheet.Range(var.Address).Comment.Shape.Height = 40
ActiveSheet.Range(var.Address).Comment.Shape.Width = 120
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim var As Range, Var1 As Range, c As Integer
For Each var In Range(\"d:d\")
c = VarType(var)
If var.Value <> \"\" Then
ActiveSheet.Range(var.Address).ClearComments
If c > 2 And c < 6 And Mid(var.Address, 2, 1) = \"D\" Then
Call Macro_commentaire(var)
Else
ActiveSheet.Range(var.Address).ClearComments
End If
End If
Next
End Sub
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 25/02/2004 à 14:34


Re-bonjour bipbipcoyote,
Merci de ta réponse, au bureau j'ai excel 2000, mais il m'étonnerais que chez moi j'ai une version inférieure, car j'ai installé le pack microsoft office sur mon PC quand j'ai acheté mon PC avec Windows XP, il y a donc env 2 ans.
Bon alors je viens de tester au bureau le code fonctionne, mais à chque fois que je clique sur une cellule n'importe laquelle dans la feuille, j'ai le sablier qui tourne ? comme s'il cherchait qque chose ceci pendant env. 6 sec. est-ce normal ???
Quand à savoir si cela fonctionne chez moi sous XP je pourrai te le dire demain matin....
Donc à demain et bonne soirée, encore avec mes excuses.
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 25/02/2004 à 15:36


si tu as un petit processeur pas rapide et beaucoup de lignes remplies, oui il est normal de voir le sablier, car à chaque fois que tu pointes une nouvelle cellule, il recommence le calcul pour TOUTE la colonne. C\'est hélas inévitable, car je ne connais pas l\'évenement lier à la mise à jour des cellules recopiées

j\'ai ajouté une ligne pour que cela ne se passe que lorsque tu pointes une cellule de la colonne D (ce sera toujours cela de gagner sur le temps du processus, on pourrait encore en gagner, mais pour cela il faut être sûr qu\'il y a aucun \"trou\" dans les données de la colonne D. En effet on peut détecter la fin du remplissage de la colonne D - au lieu d\'écrire For Each var In Range(\"d:d\") , on pourrait écrire For Each var in Range(\"D1\", Range(\"D1\").End(xlDown)), ce qui limite la boucle au nécessaire...mais elle s\'arrêtera à la première cellule vide)

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim var As Range, Var1 As Range, c As Integer
If Mid(Target.Address, 2, 1) = \"D\" Then
For Each var In Range(\"d:d\")
c = VarType(var)
If var.Value <> \"\" Then
ActiveSheet.Range(var.Address).ClearComments
If c > 2 And c < 6 And Mid(var.Address, 2, 1) = \"D\" Then
Call Macro_commentaire(var)
Else
ActiveSheet.Range(var.Address).ClearComments
End If
End If
Next
End If
End Sub

si ce n\'est pas la différence de version, alors je ne comprends pas, encore un mystère à la microsoft ... mais ce n\'est pas le premier (peut être des versions de dll différentes ou que sais-je)
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 26/02/2004 à 08:18


Bonjour Bipbipcoyote,
Alors oui nous sommes tjrs dans les mystères de l'informatique, car évidemment quand j'ai essayé chez moi ta dernière mouture, tous les commentaires se supprimaient, ( à la maison j'ai EXCEL 2002). J'ai alors re-essayé le code que tu m'avais donné et sur lequel j'avais ouvert un classeur essai, mais qui me donnait une erreur en recopiant en bas (au boulot), et bien tiens toi bien il fonctionnait correctement chez moi et en essayant ce matin ici sous excel 2000, il a également fonctionné, alors pourquoi il "déconnait" à un moment, je n'en sais rien !!
le bon code est donc le suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
'je désigne 3 variables, les noms importe peu
'par contre le type est important
Dim Var As Range, Var1 As Range, c As Integer
'on doit boucler même si une seule cellule est à considérer
'car Target peut aussi bien contenir $D$3 que $D$3:$D
For Each Var In Range(Target.Address)
'je détermine le type de donnée que contient target
'ça peut être un chiffre, un caractère, une date, autre
'comme je ne veux que traiter les chiffres, il est important
'd'obtenir ce paramètre, sinon ça bug dans la formule de
'multiplication, forcément. On ne multiplie pas une lettre
c = VarType(Var)
'ensuite, il me faut l'adresse de la cellule, pour ne
'traiter que la colonne D et aussi pour paramètrer
'le commentaire correspondant, si je traite D3, je dois
'bien sûr traiter le commentaire de D3 et pas de D6
'Var = CStr(Target.Address)
'ici, il faut que je prévois le cas où on remet la cellule à blanc,
If Var = "" Then
'il faut prévoir une seconde boucle pour nettoyer les commentaires
For Each Var1 In Range(Target.Address)
' j'enlève le commentaire tout simplement
ActiveSheet.Range(Var1.Address).ClearComments
Next
'et je sors de la procédure, je n'ai plus rien à y faire
Exit Sub
End If 'si la cellule est de type chiffre, bon là je renvois vers l'aide
'places toi sur le mot VarType (plus haut), fais F1
'tu verras que 2 est un integer, 6 un double, etc
'je teste aussi si dans l'adresse de target, si j'ai la lettre D
'pour que notre procédure ne traite que cette colonne
If c > 2 And c < 6 And Mid(Var.Address, 2, 1) = "D" Then
'j appelle la macro mise dans le module et je lui transmets Var
Call Macro_commentaire(Var)
Else 'si cela ne correspond pas, je nettoie les commentaires
'si on arrive jusqu ici, remarques que la procédure va
'se terminer toute seule
ActiveSheet.Range(Var.Address).ClearComments
End If
Next
End Sub

Voilà donc le bon code et j'espère que ceci cloturera ces commentaires qui t'on donné bien des soucis !! & à moi bien des essais, mais je suis contente du résultat et c'est l'essentiel non ?
[S]Encore merci et mes excuses pour ce contre-temps.[/S] Bonne journée.
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 26/02/2004 à 08:53


c\'est en effet, très curieux, normalement, ce sont des lignes de code toutes simples, il n\'y a aucune difficulté, pour moi les 2 moutures devraient fonctionner (bon admettons ma remarque pour le coller vers le bas pour excel97) mais sous 2000 ou 2002, les procédures sont pour moi correctes, je n\'ai pas retesté la dernière sous 2002 (je le ferais ce soir, par curiosité)... maintenant dans les mêmes versions, il peut y avoir des différentes, tout dépend du nombre d\'updates office réalisés; cela pourrait expliquer les différences de comportement... mais c\'est très ennuyeux finalement...

maintenant, l\'ordi \"peut en avoir marre\" et un petit redémarrage permet de nettoyer correctement la mémoire...certaine variable ont parfois la vie tenace, et les applications quand elles \"perdent les pédales\" récupèrent parfois des bribes de variables qu\'elles tentent vainement d\'incorporer dans des environnements qui ne sont pas les leurs

Comme tu le dis, si le résultat est présent et que tu peux lui faire confiance quand la machine est stable, c\'est le principal.... l\'expérience et son utilisation te permettront peut être un jour de découvrir ce qui a cloché

ps: ne t\'excuses pas tout le temps [;)] si je te réponds ,c\'est que j\'y trouve mon compte aussi [8D] l\'on s\'instruit mutuellement finalement...Bonne continuation !
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
Marie Line Marie Line
1 contribution
Membre depuis le 18/02/2004
Envoyé le 03/03/2004 à 14:53


Je pense que cette solution est assez simple .
Ce n’est pas moi qui l’ai créée mais mon collègue qui est informaticien
Chaque fois que tu auras mi ta cellule en € et un commentaire il faudra la sélectionner et cliquer sur le bouton

1- [S]Makro [/S]

Sub Commentaire()
\'
\' Macro_Commentaire Macro
\' Macro enregistrée le 18-02-2004 par Marie Line
\'
Montant_EURO = ActiveCell
Montant_FB = Format((Montant_EURO * 40.3399), \"#,##0\")
ActiveCell.Comment.Text Text:=Montant_FB & \" FB\"
\'
End Sub

2- [S]Créer un bouton dans la bare d’outil[/S]

Clic droit barre d’outil
Personnaliser
Commandes
Macros
Bouton personnalisé (glisser sur la barre d’outils )

Clic droit sur le bouton
Affecter une makro
Choix de la makro



mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 04/03/2004 à 09:01


Bonjour Marie-Line,
Effectivement ton bouton affecté à la macro fonctionne, je te remercie, mais ceci oblige à cliquer à chaque fois lors d'un nouveau calcul, mais c'est pas mal.
Bonne journée.
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 04/03/2004 à 13:25


je pensais qu\'on avait abouti à la solution, non ?? [8(]
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
mamie4sous mamie4sous
23 contributions
Membre depuis le 10/02/2004
Envoyé le 04/03/2004 à 15:41


Salut bipbipcoyote,
[S]Oui nous avons abouti[/S], mais qqun a répondu à nos messages pour donner une solution qui n'est pas du tout celle que tu m'as construite, car elle ne répond pas à ma demande, mais elle peut être une mini solution mais beaucoup moins pratique, donc je ne reviens pas en arrière j'ai laissé ta solution qui fonctionne comme je le veux !!!
Bonne journée.
Mais tiens une question hors sujet...les smileys, que l'on utilise dans cette messagerie des forums, peut-on les utiliser dans une messagerie normale ?(ex Outlook) merci.
Merci à tous ceux qui se donnent la peine de répondre
Bipbipcoyote Bipbipcoyote
4 254 contributions
Membre depuis le 06/03/2001
Envoyé le 04/03/2004 à 19:32


non, on ne peut pas les utiliser directement dans OE , néanmoins, tout le monde connait les smileys en \"caractères\" [LIEN]http://www.faqoe.com/?rep/fourra.htm[/LIEN] du moins les principaux. Dans outlook (pas l\'express - l\'autre) si tu choisis word comme éditeur , tu peux intégrer des images les représentants, mais ils seront fixes (pas animés). Images que tu glanes sur le net, car il n\'y en a pas en interne....
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
usul usul
1 627 contributions
Membre depuis le 24/01/2004
Envoyé le 04/03/2004 à 20:38


on va finir par vous marier tous les 2


oups
pas les modos, pas les modos [:o)]
(_Usul d'Arrakis
Serial_Dreamer_)

Discussion trop ancienne

Cette discussion a été automatiquement fermée car elle n'a plus reçue de nouveau message depuis trop longtemps.

Nous vous suggérons de créer un nouveau message

« Retour sur la liste des messages de ce forum