Excel msgbox

Résolu/Fermé
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023 - 2 juil. 2011 à 15:41
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023 - 2 juil. 2011 à 19:03
Bonjour tout le monde,

J'ai utilisé dernièrement ce code car une personne de ce forum a bien voulu m'aider (et je l'en remercie). Il est vraiment adapté à mes besoins.

Sub ControleTypePaiement()
Dim C As Range

For Each C In Range("E16:E25")

If UCase(C) = "X" And C.Offset(0, 1) = "" Then
MsgBox "Saisir le type de paiement"
Exit Sub
End If
Next C
End Sub

Cependant, j'ai voulu l'adapter pour autre chose qui semble est pratiquement identique :

Sub ControleValidation()
Dim T As Range
For Each T In Range("C6:C11")
If T.Value <> "" And C.Offset(0, 1) = "" Then
MsgBox "Activité à valider ?"
Exit Sub
End If
Next T

End Sub

Mon besoin est : si les cellules C6:C11 ne sont pas vides, et que les cellules plus loin le sont C.offset(0,1), s'affiche une boite de dialogue.
J'ai modifié comment indiquer la plage C6:C11 (je ne pense pas pouvoir utiliser Ucase) mais je n'arrive pas à trouver comment écrire cette ligne de code.

J'ai regardé dans l'aide mais j'ai un peu de mal à comprendre les explications.

Merci de bien vouloir m'aider.

Evelyne


A voir également:

5 réponses

ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
2 juil. 2011 à 15:45
bonjour

le coupable est peut être là
If T.Value <> "" And C.Offset(0, 1) = "" Then 
c'est
T.Offset(0,1)


bonne suite
0
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023
2 juil. 2011 à 15:53
Super,
Merci beaucoup.
J'ai essayé pleins de trucs et n'ai pas pensé du tout à cette lettre car pour moi elle faisait partie de Offset. J'ai changé la lettre C en T car je ne sais pas si on peut utiliser cette même lettre pour plusieurs macros dans un même classeur.
Maintenant je comprends aussi que le déplacement Offset se fait à partir de la lettre T.
Un peu à la fois je progresse mais c'est grace à tout ceux qui veulent bien m'aider car apprendre seule avec des bouquins ce n'est pas toujours facile.
A bientôt et encore merci
Evelyne
0
Bonjour Evelyne

DAns le sub ControleValidation

écris plutôt

T.Offset(0, 1) au lieu de C.Offset(0, 1)

La variable C n'est définie dans ton deuxième sous programme,
je pense que tu utilises l'offset par rapport à la cellule T.
0
ccm81 Messages postés 10853 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 avril 2024 2 404
Modifié par ccm81 le 2/07/2011 à 21:41
re
bon!!
en fait avec ton code
Dim T As Range 
For Each T In Range("C6:C11")  
If T.Value <> "" And T.Offset(0, 1) = "" Then 

- T est une variable déclarée de type Range (plage ou cellule)
- qui prend comme valeurs successives les cellules de la plage C6:C11
- le décalage de (0,1) se fait depuis cette cellule
bon courage
0

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

Posez votre question
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023
2 juil. 2011 à 19:03
Merci !
0