![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: mars 2008
Messages: 15
|
Bonsoir,
je débute en VBA .... je galere donc..... je cherche à générer une macro dont les caractéristiques seraient les suivantes:
on pourrait envisager également par une msgbox, mais je souhaite que la macro se déclenche à l'ouverture de la feuille... merci de votre aide..... J'ai un peu de mal à mettre en oeuvre les explications proposées.... je vous joins un exemple de mon tableau... pour l'instant je travaille avec une msgbox, mais non satisfaisante. Dernière modification par fvg ; 16/05/2008 à 12h12. Motif: Ajout d'un fichier exemple.... |
|
|
|
| ANNONCES | |||
|
|
|
|
#3 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: mars 2008
Version Excel : Excel 2003 (PC)
Messages: 745
|
Bonsoir fvg, Guiv,
Voici une autre solution : - Déclaration d'une procédure : Code:
Sub Detection(Cell As Range)
' Effacer le commentaire
Cell.ClearComments
' Si le contenu de la cellule = 0 ou vide, mettre un commentaire
If Cell.Value = "" Or Cell.Value = 0 Then
With Cell.AddComment
.Visible = False
.Text "Une opération sans frais n'existe pas, merci de corriger"
End With
End If
End Sub
Code:
Call Detection(Worksheets("Montage").Range("B2").Value)
__________________
@+ cbea |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: mars 2008
Messages: 15
|
Merci beaucoup pour vos réponses....
j'avais réussi avec msgbox, mais je restais sec au niveau des comments et de la détection..... j'en apprends tous les jours un peu sur le vba, mais l'enregistreur de macro recele parfois certaines surprises quand on veut modifier des macro enregistrées. |
|
|
|
|
|
#5 (permalink) | |
|
XLDnaute Nouveau
Date d'inscription: mars 2008
Messages: 15
|
Citation:
Sub Detection(Cell As Range) ' Effacer le commentaire Cell.ClearComments ' Si le contenu de la cellule = 0 ou vide, mettre un commentaire If Cell.Value = "" Or Cell.Value = 0 Then With Cell.AddComment .Visible = False .Text "Une opération sans frais n'existe pas, merci de corriger" End With End If End Sub- Appel de la procédure : Code: Call Detection(Worksheets("Montage").Range("B2").Value) si je comprends bien, c'est l'appel de procédure qui indique au programme dans quelle cellule travailler.... petite question..... comment insere la ligne call détection. doit on faire une deuxieme procédure sub ? deuxieme petite question.... comment rédigeriez vous un commentaire alternatif du type: Si le montant de la cellule est inférieure au montant d'une autre cellule (soit les frais et droits) * 0.01 ----> dans ce cas nouveau message type ("Montant probablement sous évalué"). quel que soit le mode de rédaction, que j'utilise VBA me renvoie des erreurs (surement liées à la manipulation de cette petite formule). |
|
|
|
|
|
|
#8 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: mars 2008
Version Excel : Excel 2003 (PC)
Messages: 745
|
bonjour fvg, Guiv,
L'appel de la procédure était un exemple : Code:
Call Detection(Worksheets("Montage").Range("B2").Value)
Comment s'ajoute le commentaire ? A la saisie d'une valeur dans la cellule, à la sélection d'une valeur ? Pourrais-tu joindre un exemple de fichier pour mieux comprendre ? Merci PS : Bonjour pierrejean
__________________
@+ cbea Dernière modification par cbea ; 15/05/2008 à 09h40. |
|
|
|
|
|
#9 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: mars 2008
Version Excel : Excel 2003 (PC)
Messages: 745
|
re bonjour à tous,
Si je peux me permettre, la solution de pierrejean peut également être écrite comme cela : Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
For Each Cell In Target
Call Detection(Cell)
Next Cell
End Sub
__________________
@+ cbea |
|
|
|
|
|
#10 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: janvier 2006
Localisation: 69400 LIMAS
Version Excel : Excel 2000 (PC)
Messages: 5 781
|
Re
Re Exact cbea ![]() J'y avais un peu pensé mais il m'a paru plus logique de considerer le cas de la saisie dans une seule cellule ps: bien entendu tu peux (voire même tu dois) te permettre des alternatives Je me suis bien permis de completer ton code !! |
|
|
|
|
|
#11 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: décembre 2006
Messages: 154
|
Bonsoir fvg, le fil,
Réponse un peu tardive pour fvg: Target représente un objet Range. Sans plus de précision, il représente toutes les cellules et toutes les plages de ta feuille. Pour restreindre à une plage (ou à une cellule): If Not Intersect(Target, TaPlage) Is Nothing Then TonCode End If Cordialement, Guiv |
|
|
|
|
|
#12 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: janvier 2006
Localisation: 69400 LIMAS
Version Excel : Excel 2000 (PC)
Messages: 5 781
|
Re
Je me permet de rectifier Target est l'objet Range qui a conduit au changement de la feuille Si une seule cellule a été modifiée Target est cette cellule ; si une plage a été modifiée, Target est cette plage (cas de l'effacement d'une plage) Pour s'en convaincre tester avec msgbox( Target.address ) Si l'on veut réagir au changement d'une cellule (par ex A1) Code:
if Target.Address="$A$1" Then 'ou 'if Target.Address(0,0)="A1" Then code end if |
|
|
|
|
|
#15 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: mars 2008
Version Excel : Excel 2003 (PC)
Messages: 745
|
Bonjour fvg et à tous,
Pourrais-tu nous donner des informations complémentaires ? Dans quelles cellules veux-tu voir apparaître les commentaires ? Merci
__________________
@+ cbea |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| aide insertion commentaires | jeremac | Forum Excel | 2 | 14/05/2008 16h18 |
| Ajouter dans une colonne, des commentaires avec le contenu d'une autre colonne | bravojr | Forum Excel | 6 | 11/01/2008 10h49 |
| Commentaires | THEMIS | Forum Excel | 3 | 01/12/2007 17h18 |
| Aide pour ajout de commentaires | Ken Hutchinson | Forum Excel | 3 | 13/11/2007 11h49 |
| Commentaires | Bronson | Forum Excel Downloads - Archives | 2 | 09/04/2004 19h18 |