Excel msgbox

Résolu
Evedll Messages postés 79 Statut Membre -  
Evedll Messages postés 79 Statut Membre -
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

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  2. Evedll Messages postés 79 Statut Membre
     
    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
  3. Patrice
     
    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
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Evedll Messages postés 79 Statut Membre
     
    Merci !
    0