Contrôler la saisie de cellules

Bonjour,

Sur une feuille nommée « Prospects » je veux rendre obligatoire la saisie de certaines cellules avant de pouvoir lancer une macro sur un clic bouton.

Cette obligation doit être présente de la ligne 12 à ligne 2012 pour les colonnes A ; B ; C ; D ; F ; I ; L.

Colonnes « A, B, D, F, L » saisie de texte

Colonne « C » formatée pour recevoir du code postal

Colonne « I » formatée pour recevoir numéro de téléphone

J’ai fait le code ci-dessous qui fonctionne. Exemple si on saisie du texte dans B12, lorsque l'on veut aller en C13, mais que A12 est vide, le message d'erreur s'affiche.

Mais je ne sais pas comment l’étendre aux autres colonnes….

Merci à vous.

Lenul

Private Sub worksheet_change(ByVal target As Range)
If target.Column = 2 And target.Count = 1 Then
If target.Offset(, -1).Value = Empty Then
Application.EnableEvents = False
MsgBox " Veuillez renseigner la cellule de gauche !"
target.Value = Empty
target.Offset(, -1).Select
Application.EnableEvents = True
End If
End If
If target.Column = 1 And target.Count = 1 Then
target.Offset(0, 1).Select
End If
End Sub

Bonjour et bienvenue,

Peut-tu joindre la feuille ?

en magouillant les données si confidentielles et en colorant les cellules

devant être obligatoirement remplies.

Amicalement

Claude

Bonsoir,

voila la feuille en question

et merci de ton aide

lenul

80classeur1.xls (18.00 Ko)

Bonsoir à tous,

J'ai considéré ici que l'on contrôle uniquement la dernière ligne + 1,

si ligne complète, écrit "ok" en colonne "M" (à masquer)

Sub ControleSaisie()
Dim Lg%, Cel As Range, Plg As Range
'Macros par Claude Dubois pour "lenul78750" Excel-Pratique le 13/3/2010
    Lg = Range("m65536").End(xlUp).Row + 1 'ligne à contrôler
    Set Plg = Range("a" & Lg & ":d" & Lg & ",f" & Lg & ",i" & Lg & ",L" & Lg)
        For Each Cel In Plg
            If Cel = "" Then
                Cel.Activate
                MsgBox (Cells(11, Cel.Column) & Chr(10) & _
                "Veuillez renseigner cette cellule !")
                Exit Sub
            End If
            If WorksheetFunction.CountA(Plg) = 7 Then Range("m" & Lg) = "ok"
        Next Cel
    MsgBox ("suite macro") '**** suite macro ****
End Sub

si tu veux balayer les 1200 lignes, il faut faire autrement.

Amicalement

Claude

capture d ecran 67
63lenul78570.zip (15.32 Ko)

Bonjour Claude

Merci de ton aide

Dans ta proposition je suis ok pour que le contrôle se fasse sur la dernière ligne, par contre je n'ai pas besoin d'avoir en M l'affichage de "OK".

Ce qui serait génial c'est que en lieu et place de ce "OK", s'affiche un bouton permettant de lancer une macro !

A bientôt et bon dimanche

Michel

4fact.xlsx (22.02 Ko)

Bonjour à tous,

je n'ai pas besoin d'avoir en M l'affichage de "OK"

toi non, mais nécessaire pour la macro !

Quant au bouton, c'est celui de ta macro,

au début de ta macro, tu mets: Call ControleSaisie

elle ne s'exécutera que si les cellules sont remplies.

à +.... Claude

5geny-2.xlsm (39.96 Ko)

Re,

Ok j'essaie tout cela et je te tiens informé.....sans faute !

Michel

Bonsoir,

Autre façon de faire, avec un formulaire de saisie

Amicalement

Claude

127lenul78570-2.zip (21.94 Ko)

Bonjour,

Donc j'ai mis en place ton code, mais j'ai un petit souci. Tu a peut être vu avec la pièce jointe que les lignes 1 à 11 sont différentes et que la ligne 12 n'est pas a renseigner puisque l'on y trouve les intitulés de colonnes.

Le but de cette macro est de contrôler la saisie dans les colonnes A,B,C,D,F,I et L

Le contrôle doit se faire sur la dernière ligne ou des info ont été saisies

Avec la macro si je renseigne tous les champs obligatoires en ligne 12 la macro me réclame de saisir la raison sociale pour A1....

Si je modifie la rédaction de la macro selon cette écriture :

Lg = Range("m65536") . End (xlUp) . Row

la macro me réclame de saisir le code postal en C3....

Je ne trouve pas la bonne méthode pour corriger ce problème..

Michel

1julia57-v2.xlsx (28.76 Ko)

Bonjour,

De quelle macro parle-tu ?

évidemment sur mon dernier fichier, tu as 2 méthodes,

c'est l'une ou l'autre !

la 2ème n'utilise pas la colonne "M" et rempli la base

Claude

Bonsoir

La macro dont je parle est celle-ci:

Sub ControleSaisie()
Dim Lg, Cel As Range, Plg As Range
'Macros par Claude Dubois pour "lenul78750" Excel-Pratique le 13/3/2010
    Lg = Range("m65536").End(xlUp).Row + 1 'ligne à contrôler
    Set Plg = Range("a" & Lg & ":d" & Lg & ",f" & Lg & ",i" & Lg & ",L" & Lg)
        For Each Cel In Plg
            If Cel = "" Then
                Cel.Activate
                MsgBox (Cells(11, Cel.Column) & Chr(10) & _
                "Veuillez renseigner cette cellule !")
                Exit Sub
            End If
            If WorksheetFunction.CountA(Plg) = 7 Then Range("m" & Lg) = "ok"
        Next Cel
    MsgBox ("suite macro") '**** suite macro ****
End Sub

re,

tu dois écrire une en-tête en colonne "M" (ligne 11)

Bonjour,

Super ça marche !

Un grand merci pour ton aide

Bonne journée

Michel

ok

a resolu2
Rechercher des sujets similaires à "controler saisie"