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

Usine à gaz

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,
 

Usine à gaz

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
 

Usine à gaz

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,
 

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:

Usine à gaz

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,
 

Pièces jointes

  • test_DerniereLigne_col20.xlsm
    15.8 KB · Affichages: 3

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:

Discussions similaires