Bonjour Les Amis,
Svp, dans un formulaire j'ai besoin d'un numéro on rajoutant a chaque fois 1 a la dernière valeur de la dernière cellule non vide de la colonne B
Formulaire de saisie dans une feuille nommée "FNC_CHAHBI" , la cellule "E4"
"DATA" c'est Feuille ou se trouve la derniere cellule non vide de la colonne B sur laquelle on doit rajouter
j'ai essayé ça: Private Sub CommandButton2_Click()
Dim nbrfiche As Range
nbrfiche.Value = Sheets("DATA").Range("B65536").End(xlUp).Row
Sheets("FNC_CHAHBI").Range("E4").Value = nbrfiche.Value + 1
End Sub
j obtiens un débogage dans cette ligne: nbrfiche.Value = Sheets("DATA").Range("B65536").End(xlUp).Row
Bonjour Najih,
nbrfiche est un nombre pas un range :
VB:
Private Sub CommandButton2_Click()
Dim nbrfiche As Long
nbrfiche = Sheets("DATA").Range("B65536").End(xlUp).Row
Sheets("FNC_CHAHBI").Range("E4").Value = nbrfiche + 1
End Sub
Pas besoin de passer par un objet Range pour 'nbrfiche'.... Enfin à mon humble avis ...
VB:
Option Explicit
Private Sub CommandButton2_Click()
Dim nbrfiche As Integer
nbrfiche = Sheets("DATA").Range("B65536").End(xlUp).Row
Sheets("FNC_CHAHBI").Range("E4").Value = nbrfiche + 1
End Sub
Bonne fin de journée
@+Thierry
EDIT Salut @sylvanu !
Et aussi as Long oui, si on dépasse la capacité Integer
Bien sur mais ce n'est pas le cas de 2016. D'ailleurs sur 2007 j'ai 2^20 lignes.
Si la Base qui est dans Data a plus de 32768 lignes il y a erreur.
N'ayant aucun fichier test, un Long est plus sécurisant qu'un Integer;
Pas besoin de passer par un objet Range pour 'nbrfiche'.... Enfin à mon humble avis ...
VB:
Option Explicit
Private Sub CommandButton2_Click()
Dim nbrfiche As Integer
nbrfiche = Sheets("DATA").Range("B65536").End(xlUp).Row
Sheets("FNC_CHAHBI").Range("E4").Value = nbrfiche + 1
End Sub
Bonne fin de journée
@+Thierry
EDIT Salut @sylvanu !
Et aussi as Long oui, si on dépasse la capacité Integer
Thierry
ca repond a la moitie de mon besoin deja merci bcp
ca ma reste de prendre en compte le contenu de la cellule, par exemple si la valeur de derniere cellule est de 30 ex (mem si elle est dans la ligne 20 par ex)
je cherche a avoir 30+1 = 31
Bonjour Najih,
nbrfiche est un nombre pas un range :
VB:
Private Sub CommandButton2_Click()
Dim nbrfiche As Long
nbrfiche = Sheets("DATA").Range("B65536").End(xlUp).Row
Sheets("FNC_CHAHBI").Range("E4").Value = nbrfiche + 1
End Sub
ca ma reste de prendre en compte le contenu de la cellule, par exemple si la valeur de derniere cellule est de 30 ex (mem si elle est dans la ligne 20 par ex)
Option Explicit
Private Sub CommandButton2_Click()
Dim nbrfiche As Range
Set nbrfiche = Sheets("DATA").Range("B65536").End(xlUp)
If IsNumeric(nbrfiche.Value) Then
Sheets("FNC_CHAHBI").Range("E4").Value = nbrfiche.Value + 1
Else
MsgBox "La valeur de " & nbrfiche.Address & " n'est pas numérique!" & vbCrLf & "Aucun calcul effectué"
End If
End Sub
A noter le SET d'objet pour faire un objet "Range" ... (comme signalé par jmfmarques au début)
Option Explicit
Private Sub CommandButton2_Click()
Dim nbrfiche As Range
Set nbrfiche = Sheets("DATA").Range("B65536").End(xlUp)
If IsNumeric(nbrfiche.Value) Then
Sheets("FNC_CHAHBI").Range("E4").Value = nbrfiche.Value + 1
Else
MsgBox "La valeur de " & nbrfiche.Address & " n'est pas numérique!" & vbCrLf & "Aucun calcul effectué"
End If
End Sub
A noter le SET d'objet pour faire un objet "Range" ... (comme signalé par jmfmarques au début)