Excel msgbox

Résolu/Fermé
Messages postés
72
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
25 octobre 2018
-
Messages postés
72
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
25 octobre 2018
-
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


5 réponses

Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
bonjour

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


bonne suite
Messages postés
72
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
25 octobre 2018

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
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.
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
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
Messages postés
72
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
25 octobre 2018

Merci !