je débute en VBA .... je galere donc.....
je cherche à générer une macro dont les caractéristiques seraient les suivantes:
Détection du contenu d'une cellule d'une feuille appelée "montage".
Si la cellule sélectionnée est vide ou = 0
ajouter commentaire avec le message suivant: " une opération sans frais n'existe pas, merci de corriger".
apres correction.. donc, quand la cellule est différente à 0 (mais je voudrais pouvoir tester cette valeur suivant différents pourcentages de la valeur de transaction... mais c'est secondaire....) donc apres correction, disparition du commentaire....
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.
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
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.
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
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 :
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).
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 ?
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
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