Aide VB pour débutant

Résolu/Fermé
Utilisateur anonyme - 20 mars 2009 à 10:17
 Utilisateur anonyme - 20 mars 2009 à 14:37
Bonjour,

j'ai un "petit" souci (pour vous, pour moi il est grand...) sur VB.
J'ai un tableau avec plusieurs lignes et colonnes, et une personne doit remplir les lignes au fur et à mesure... certaines colonnes sont obligatoires et d'autres non, car elles se remplissent seules...
Et en fait, j'aimerais effectuer une macro qui ferait que si la personne ne remplit pas toutes les cases jaunes (obligatoires), en appuyant sur un bouton (ou autre) un message apparaisse pour le prévenir... et je ne vois pas comment faire ça...
j'arrive à faire une msg box pour avertir qu'une case n'est pas remplie mais c'est tout... et je me demande comment faire pour que cela s'effectue juste sur la ligne qu'il doit remplir, ou les lignes qu'il a rempli si il en renseigne plusieurs d'un coup... pas celles qui sont en dessous (et forcément vide)...

si vous pouvez m'éclairer... merci d'avance
A voir également:

4 réponses

Utilisateur anonyme
20 mars 2009 à 11:24
svp c'est que c'est très urgent en fait...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
20 mars 2009 à 12:46
Bonjour,

Il faut que tu déclares ou que tu nommes une plage et ensuite que tu testes chaque cellule de cette plage.

Par exemple :

Dim plage As Range
Dim plage As Range
Dim cl

    Set plage = Sheets(1).Range("A2:G10")
    
    For Each cl In plage
        If cl.Interior.ColorIndex = 6 And cl.Value = "" Then
            MsgBox "cellule " & cl.Row & ", " & cl.Column & " non renseignée."
        End If
    Next cl


Attention, je n'ai pas testé, j'ai fait ça de tête, mais c'est l'idée.

;o)
0
Utilisateur anonyme
20 mars 2009 à 13:45
Merci beaucoup, ça m'aide pas mal ! il me reste néanmoins un souci.

Comment faire pour que cela se fasse sur plusieurs lignes si la personne remplit plusieurs lignes d'un coup ? comment faire pour que cela se fasse sur les lignes qu'il a renseignée depuis l'ouverture du document ?

merci d'avance
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
20 mars 2009 à 13:53
Dans le post initial tu dis : "en appuyant sur un bouton (ou autre) ".

Je suppose que la macro se lance sur l'évènement click du bouton à la fin de la saisie.

N'oublie pas de définir la plage ici : Set plage = Sheets(1).Range("A2:G10"). Remplace "A2:G10" par les limite de ton tableau.

;o)
0
Utilisateur anonyme
20 mars 2009 à 14:06
Sub tentative()

Dim plage As Range
Dim cl

Set plage = Sheets(1).Range("c2026,d2026,i2026,m2026,n2026,o2026")

For Each cl In plage
If cl.Value = "" Then
msgbox "Merci de compléter la ligne " & cl.Row & ", colonne " & cl.Column & ""
End If
Next cl

End Sub


voila j'ai pris ta macro, et j'ai mis mes colonnes...comment je peux faire pour le problème des lignes ? parce que 2026 ne doit pas être fixe. La msg box c'est ok...par contre je n'arrive pas à mettre la cellule au lieu de colonne et ligne... j'aimerais que ça affiche: "merci de compléter la cellule c2026" au lieu de mettre "merci de compléter la ligne 2026, colonne 3"
mais le gros problème reste la selection des lignes...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
20 mars 2009 à 14:25
On n'est plus dans le cas de figure défini dans le post initial ...

Voilà ce que j'ai retenu dans le post initial :
J'ai un tableau avec plusieurs lignes et colonnes, et une personne doit remplir les lignes au fur et à mesure...
...
Et en fait, j'aimerais effectuer une macro qui ferait que si la personne ne remplit pas toutes les cases jaunes (obligatoires), en appuyant sur un bouton (ou autre) un message apparaisse pour le prévenir... et je ne vois pas comment faire ça...


C'est ce que fait le bout de code du post 2.

Maintenant tu veux tester une ligne particulière (qui n'est pas fixe) sur certaines colonnes et indiquer la cellule non renseignée sous le format "An"... on n'est plus du tout dans le même cas de figure et donc le post 2 est hors sujet maintenant.

Je veux bien aider mais pas perdre mon temps.

0
Utilisateur anonyme
20 mars 2009 à 14:37
excuse moi, je me suis sûrement mal expliqué.

je récapitule: j'ai un tableau avec plusieurs colonnes et beaucoup de lignes. Certaines colonnes sont obligatoires ( C, D, I, M, N, O ). La personne doit remplir une ligne pour chaque action effectuée. Mais souvent, elle remplit plusieurs lignes d'un coup, au lieu de le faire au fur et à mesure.

Ce que je voudrais c'est que ma macro fasse que :

- soit en cliquant sur le bouton, une msg box lui indique si il a oublié une colonne obligatoire, sur les lignes qu'il vient de remplir...

- soit de manière automatique...

Pour le moment j'ai ça :

Private Sub CommandButton1_Click()

Dim plage As Range
Dim cl

Set plage = Sheets(1).Range("c2026,d2026,i2026,m2026,n2026,o2026")

For Each cl In plage
If cl.Value = "" Then
msgbox "Merci de compléter la ligne " & cl.Row & ", colonne " & cl.Column & ""
End If
Next cl

End Sub


Comme tu vois je n'arrive qu'à le mettre pour la ligne 2026, alors que la personne peut remplir plus que cela...
Et j'aimerais que dans la msg box, la cellule apparaisse, et non pas le n° de ligne et de colonne...

Encore désolé de m'être mal expliqué, et merci pour ton aide
0