XL 2016 tester la dernière ligne NON vide col A et contrôler si col 20 est NON vide

arthour973

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

J'ai un souci de code que je ne sais pas écrire :

Je voudrais que le code teste la colonne 20 de la dernière ligne "NON vide" :

If dernière ligne NON vide, colonne, 20) = "" Then
MsgBox ("Vous avez déjà une ligne ajoutée à remplir !" & nbcel)
Exit Sub
End If

Pourriez-vous m'aider ?
Avec mes remerciements,
Amicalement,
lionel,
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, arthour

Si la dernière ligne de la colonne 20 est non vide, elle ne peut être égale à "" puisque elle est non vide, donc pleine...
 

arthour973

XLDnaute Barbatruc
Supporter XLD
Re-JM,

Merci d'être là : Remarque judicieuse (comme d'hab) :)

Mais si car la dernière ligne NON vide, peut ne pas être complètement remplie.
Contrôler si la colonne 20 de la dernière ligne est NON vide permet d'être certain que toute la ligne est remplie.

Je pourrais aussi dire comme ça :
Contrôler si la colonne 20 de la dernière ligne est NON vide colonne a permet d'être certain que toute la ligne est remplie.
soit :
If dernière ligne NON vide en colonne A, la colonne, 20) = "" Then
MsgBox ("Vous avez déjà une ligne ajoutée à remplir !" & nbcel)
Exit Sub
End If

lionel,
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Voir ce bout de code (en guise d'esquisse)
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 20 Then
If Application.CountBlank(Cells(Target.Row, 1).Resize(, 20)) > 0 Then
MsgBox "Saisie incomplète!", vbCritical, "Erreur"
End If
End If
End Sub
 

arthour973

XLDnaute Barbatruc
Supporter XLD
Re-Re- et Re JM,

Ton code marche super bien ... déjà un grand merci :)

Mais ... LOL
J'aurais besoin (plutôt que de le mettre dans le code de la feuille) :
de le mettre au début d'un code dans un module.
je cherche à modifier sans succès :mad: (j'suis pas encore doué en VBA

Tu peux encore m'aider ?
lionel,
 

arthour973

XLDnaute Barbatruc
Supporter XLD
C'est bon, j'ai trouvé :)
VB:
Sub Macro1()
If Application.CountBlank(Cells(ActiveCell.Row, 1).Resize(, 2)) > 0 Then
MsgBox "Saisie incomplète!", vbCritical, "Erreur"
Else
MsgBox "Saisie bonne!", vbCritical, "Erreur"
Exit Sub
End If
End Sub
Un grand Merci :)
 

Staple1600

XLDnaute Barbatruc
Re

J'ai déjà du te faire la remarque (en toute amicale ironie ;)
Un barbatruc devrait être capable de faire cette simple modif
(Transvaser le code d'une procédure évenementielle dans un module standard)
Surtout que désormais tu fais du peer to peer avec un membre du forum
(Cela doit donc être trés formateur niveau VBA)

Il y a rien de bien compliqué niveau modif, non?
VB:
Sub Arthour_et_sonpoildanslamain()
If ActiveCell.Column = 20 Then
If Application.CountBlank(Cells(ActiveCell.Row, 1).Resize(, 20)) > 0 Then
MsgBox "Saisie incomplète!", vbCritical, "Erreur"
End If
End If
End Sub
EDITION: Ah finalement, le poil commence à raccourcir ;)
Sinon pourquoi parler de la colonne 20 alors que désormais dans ta modif
ce n'est plus le cas?
Et pourquoi ton second Msgbox affiche un beau vbCritical alors que le saisie est censée être bonne?
Et pourquoi le titre a été changé (et donc la question)?
Ce qui fait que ma proposition ne correspond plus au titre...
 
Dernière édition:

arthour973

XLDnaute Barbatruc
Supporter XLD
Désolé, j'y reviens car après d'autres tests, ça ne fonctionne pas.

Certainement que je me suis encore mal exprimé LOL.

Je reformule :
Je voudrais qu'en cliquant n'importe où dans la feuille, le code teste dans la dernière ligne NON vide de la colonne A si la cellule colonne 20 de la même ligne est NON vide

Fichier test joint : dernière ligne NON vide en A
= ligne 5
= colonne NON vide = T5
Avec mes reciements,
lionel,
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Re

J'ai ouvert ta PJ
et ce que j'y lis est quelque peu "irritant"
Je voudrais qu'en cliquant n'importe où le code teste
dans la dernière ligne NON vide de la colonne A
si la cellule colonne 20 de la même ligne est NON vide
Ce qui implique forcément une procédure évenmentielle (donc dans le code de la feuille)
Or tu disais plus bas que tu voulais le code dans un module...
Alors fais ton choix, camarade (ou sois juste cohérent) ;)
 

Staple1600

XLDnaute Barbatruc
Re-Re- et Re JM,

Ton code marche super bien ... déjà un grand merci :)

Mais ... LOL
J'aurais besoin (plutôt que de le mettre dans le code de la feuille) :
de le mettre au début d'un code dans un module.
je cherche à modifier sans succès :mad: (j'suis pas encore doué en VBA

Tu peux encore m'aider ?
lionel,
Dans ce cas, pourquoi avoir prétendu le contraire précedemment?
Aucun bénéficie (à part une perte de temps)

Donc une procédure évenementielle (qui sera vite "fatiguante" à l'usage)
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x As Range
Set x = Cells(Rows.Count, 1).End(3)
If Not IsEmpty(x) And Len(x.Offset(, 19)) Then
MsgBox "Saisie OK", vbInformation
Else
MsgBox "Saisie incorrecte", vbCritical
End If
End Sub
 
Dernière édition:

arthour973

XLDnaute Barbatruc
Supporter XLD
Re-JM,

Merci pour ce nouveau code.

Il s'exécute bien en cliquant n'importe :)
mais il dit toujours saisie incomplète alors que la cellule T5 est NON vide.
Je continue à chercher :)
lionel,
 

arthour973

XLDnaute Barbatruc
Supporter XLD
Re,
je crois que j'ai trouvé :
J'ai remplacé ton code :
Set x = Cells(Rows.Count, 1).End(3)
par
Set x = Cells(Rows.Count, "a").End(xlUp)(1)

Sans toi, je n'y serais pas arrivé.
Merci JM :)
lionel,
 

Staple1600

XLDnaute Barbatruc
Re

Dans le fichier du message#9, T5 était vide et la chaine ok était en T6
Alors qu'on pouvait lire dans ce même fichier
Fichier test : dernière ligne NON vide en A
= ligne 5
= colonne NON vide = T5
Incohérence quand tu nous tiens ;)

Tant mieux si tu es si satisfait
(et tant pis pour l'usine à gaz ;))
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas