## Balayage ligne par ligne pour vérifier condition ##

D

dagada75

Guest
Re-Bonjour à Tous,

J'émet à nouveau un message pour résoudre mon problème de contrôle ligne par ligne ...
J'ai réussi à établir le contrôle suivant avec l'aide de 'michel' :
Pour les colonnes A1 et B1, si l'une des deux cellules est vide ALORS ne pas sauvegarder mon fichier...

J'aimerai maintenant élargir ce contrôle à l'ensemble des colonnes A et B en sachant que dès lors qu'une cellule A est renseignée ALORS la cellule B "d'a côté" doit l'être (Si A9 non vide alors B9 non vide SINON pas de sauvegarde).
Comme je l'aie précédemment évoqué ... je n'arrive pas à codifier en vba "telle condition pour CHAQUE ligne de telles colonnes"

Merci de votre précieuse aide ... une ébauche est jointe en fichier zip.
 

Pièces jointes

  • Classeur1.zip
    7.4 KB · Affichages: 39
  • Classeur1.zip
    7.4 KB · Affichages: 46
  • Classeur1.zip
    7.4 KB · Affichages: 46
R

Rai

Guest
Bonsoir,

J'ai une proposition.
Telle quelle, elle a un défaut : si la ligne 1 n'est pas completement renseignée (colA ET colB), ça n'est pas détecté.
Si jamais ça pose problème, j'ajouterai cette fonctionnalité

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
DerLig = WorksheetFunction.Max([A65535].End(xlUp).Row, [B65535].End(xlUp).Row)
For Lig = DerLig To 1 Step -1
If Cells(Lig, 1) = "" Or Cells(Lig, 2) = "" Then Exit For
Next Lig
If Lig > 1 Then
Cancel = True
MsgBox "Il reste des cellules non renseignées !"
End If
End Sub

Bonne soirée

Rai
 
D

Dagada75

Guest
Merci ...

C'est superbe !

Ca marche parfaitement ...

Si tu peux ajouter la fonctionnalité qui fait défaut ... cela serait parfait (car je dois intégrer cette fonctionnalité à une autre macro) !
:eek:)

Merci Beaucoup !!!!

Y a vraiment des CRACKS sur ce site !!

Maintenant .... je vais passer ma soirée à "traduire" ta logique dans ta formule ....

;o)

MERCI Rai
 
D

Dagada75

Guest
Ca marche parfaitement !!
Nickel !

Merci Rai !

SI TU PEUX AJOUTER CETTE FONCTIONNALITE pour corriger le défaut de la première ligne cela serait PARFAIT car je vais intégrer ton programme à une autre macro.

:eek:)

Je vais essayer de traduire ta logique lors de ma soirée !!

Par contre .... cela ne marche pas si je rajoute un contrôle sur une autre cellule de colonne ? Pourquoi ?
Exemple
DerLig = WorksheetFunction.Max([A65535].End(xlUp).Row, [B65535].End(xlUp).Row, [D65535].End(xlUp).Row)

Merci encore RAi
 
R

Rai

Guest
Salut,

Alors, voici une version améliorée de la procédure.
cette fois-ci, elle prend en compte toutes les lignes, de la dernière utilisée à la première.
Le nombre de colonnes est paramétrable, ainsi que la colonne de départ.
Encore une restriction : les colonnes doivent être contigues

Le code :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Pcol! = 1 'N° 1ere colonne à examiner
NbCol! = 3 'Nombre de colonnes concernées

For Col! = Pcol To Pcol + NbCol - 1
DerLig = WorksheetFunction.Max(Cells(65535, Col).End(xlUp).Row, DerLig)
Next Col

For Lig! = DerLig To 1 Step -1
For Col! = Pcol To Pcol + NbCol - 2
If Cells(Lig, Col) = "" Or Cells(Lig, Col + 1) = "" Then Flag = True
Next Col
Next Lig

If Flag Then
Cancel = True
MsgBox "Il reste des cellules non renseignées !"
End If
End Sub

Bonne soirée

Rai

P.S. : Merci pour les compliments, ils me font quand même un peu rougir ;o))
 
D

dagada75@yahoo.fr

Guest
... Rien à redire si ce n'est : Comment tu fais pour réfléchir si Vite !

:eek:(((

J'étais encore entrain de réfléchir à ta première macro !!

Bravo !

La c'est LA PERFECTION !!

pourquoi rougir ? T'es un crack ! point barre !

Et il y en a plusieurs sur ce site ....

MERCI pour tout Rai ! Sincèrement ...
 

Discussions similaires

Statistiques des forums

Discussions
312 545
Messages
2 089 470
Membres
104 173
dernier inscrit
RavraX