Affecter une valeur a la derniere ligne non vide d 1 colonne

Bonjour,

Je me demande s il existe une solution elegante pour affecter une valeur mettons le caractere x a la derniere ligne non vide d une colonne ?

En considerant que je travaille sur la colonne A

Pour ma part je suis parti sur une solution du type :

A1=SI(A1<>"";"A1";"x")

A2=SI(A2<>"" ET(A1<>"") ;"A2";"x")

etc ...

Qu en pensez vous ?

Cordialement

Anthony

Bonsoir Anthony,

une petite macro

Sub essai()
    [A65536].End(xlUp)(2) = "X"
End Sub

amicalement

Claude.

dubois a écrit :

Bonsoir Anthony,

une petite macro

Sub essai()
    [A65536].End(xlUp)(2) = "X"
End Sub

amicalement

Claude.

Ah oui la c est super rapide

L idee en fait c etait d affecter un "x" a la derniere cellule non vide d une colonne donnee en appuyant sur un bouton validation par exemple.

Est ce possible ?

re,

tu veux choisir la colonne ?

Sub essai2()
    rep = InputBox("entrez la lettre de colonne")
    Range(rep & "65536").End(xlUp)(2) = "X"
End Sub

Claude.

Bonsoir,

L idee en fait c etait d affecter un "x" a la derniere cellule non vide d une colonne donnee en appuyant sur un bouton validation par exemple.

Avec ce code qui te mettra un X dans la colonne de la cellule active, donc de ton choix.

Sub mettreX()
Dim letcol As String
letcol = Left(ActiveCell.Address(0, 0), 1 - (ActiveCell.Column > 26))
Range(letcol & 65536).End(xlUp)(2) = "x"
End Sub

Il te reste à dessiner un bouton par AFFICHAGE / BARRE OUTILS / FORMLAIRE et l'affecter à cette macro

Amicalement

Dan

re,

Salut Dan,

peux-tu expliquer cette ligne, et "Kézaco" ce 26 ?

letcol = Left(ActiveCell.Address(0, 0), 1 - (ActiveCell.Column > 26)) 

Claude.

re,

Claude c'est pour déterminer la lettre de la colonne.

L'alphabet nous donne 26 lettres de A à Z. Excel nous donne des colonnes de deux lettres après la colonne Z --> AA, AB.

Nous devons donc dans ce cas trouver la lettre A à Z (1 lettre) ou AA à ... ( 2 lettres)

Selon le cas, il faudra donc aller chercher A ou AB

ActiveCell.Address(0, 0) : renvoie la référence de la cellule : ex A1 ou AB1

1 - (ActiveCell.Column > 26) renvoie 1 ou 2 selon que l'on est entre A et Z ou après Z (AA, AB...).

Avec la fonction LEFT, cela permet de récupérer 1 ou 2 lettres de la référence colonne de la cellule concernée.

Amicalement

Dan

re,

Encore une bonne chose que j'ai appris aujourd'hui.

merci Dan

Bonne nuit, à demain.

Claude.

Nad-Dan a écrit :

Bonsoir,

L idee en fait c etait d affecter un "x" a la derniere cellule non vide d une colonne donnee en appuyant sur un bouton validation par exemple.

Avec ce code qui te mettra un X dans la colonne de la cellule active, donc de ton choix.

Sub mettreX()
Dim letcol As String
letcol = Left(ActiveCell.Address(0, 0), 1 - (ActiveCell.Column > 26))
Range(letcol & 65536).End(xlUp)(2) = "x"
End Sub

Il te reste à dessiner un bouton par AFFICHAGE / BARRE OUTILS / FORMLAIRE et l'affecter à cette macro

Amicalement

Dan

Voila ce que j ai fait en fait :

J ai pris sur la *feuille1* un bouton (predessine) dans la bibliotheque microsoft et je lui ai affecte ta macro :

Sub essai()

[A65536].End(xlUp)(2) = "X"

End Sub

seulement voila j aurais souhaite que celle ci agisse non plus sur la feuille1 (la feuille ou y a le bouton) mais sur la feuille2 par exemple et la je bloque j ai essaye en vain de m inspirer de ton code avec des choses comme :

Sub essai()

[feuille2!A65536].End(xlUp)(2) = "X"

End Sub

ou encore

Sub essai()

feuille2![A65536].End(xlUp)(2) = "X"

End Sub

mais rien y fait !

Suis je a cote de la plaque avec mon feuille2! ou pas ?

Cordialement

Anthony

re,

si tu es sûr de vouloir mette ce X en colonne A, essaye :

Sub mettreX()
Sheets("feuil2").Range("A65536").End(xlUp)(2) = "x"
End Su

b

Amicalement

Dan

Nad-Dan a écrit :

re,

si tu es sûr de vouloir mette ce X en colonne A, essaye :

Sub mettreX()
Sheets("feuil2").Range("A65536").End(xlUp)(2) = "x"
End Su

b

Amicalement

Dan

Super ca marche tres bien !

Merci je me rends compte que c est la fonction Sheets qui fait appel a une feuille donnee decidemment j en ai appris des choses grace a vous.

Bonjour le forum !

Une petite précision sur le (2) ?

Range("A65536").End(xlUp)(2)

Concrètement c'est compris comment par VBE ?

Salut à tous,

(2), cela correspond à la 2ème ligne après la dernière cellule non vide.

équivaut à .offset(1,0)

Claude.

Bonjour, sylvain, claude

En complément, le code :

Range("A65536").End(xlUp)(2)

est un raccourci de :

Range("A65536").End(xlUp).Item(2)

Item renvoie un membre d'une collection, par sa position ou par son nom

Item comprend deux éléments (ligne, colonne)

Le premier code, sans (2), sous-entend Item(1, 1)

Le deuxième code renvoie donc la deuxième ligne de la collection, et peut être écrit :

Item(2, 1)

Item(2, 2) te donnerait la première cellule non vide de la colonne située à la droite (ici B)

Merci Claude et Félix,

Rechercher des sujets similaires à "affecter valeur derniere ligne vide colonne"