VBA comment effacer la derniere cellule plein

Résolu/Fermé
julsof Messages postés 13 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 23 septembre 2008 - 13 août 2008 à 14:41
Leahkim Messages postés 3081 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 - 13 août 2008 à 15:30
Bonjour,


Voila, mon probleme.
Je suis en train de développer une petite structure en VB pour une amie mais je bloque sur la fin.
En fait j'incrémente des lignes dans un tableau via des input box.
En fin de code j'aimerais sélectionner la dernière cellule pleine de la colonne E et voir si elle est égale à 0.
ensuite si elle est = à 0 j'aimerais l'effacer sinon la laisser.
Le problème est que je n'arrive pas à intégrer mon IF then
en français je voudrais faire ça :
if (la derniere cellule pleine de la colonne E = 0) then (efface là) sinon (ne fait rien)

voila mon code :
Sub creation_article()

Dim creation_article As String

MsgBox "Vous allez créer un nouvel article H2O", vbDefaultButton1
reponse = MsgBox("Voulez-vous continuer ?", vbYesNo)
If reponse = vbNo Then Exit Sub
Ref = InputBox("Indiquez la REFERENCE de l'article", "CREATION D'ARTICLE")
désignation = InputBox("Indiquez DESIGNATION de l'article", "CREATION D'ARTICLE")
PUachatHT = InputBox("Indiquez le Prix Unitaire d'achat HT", "CREATION D'ARTICLE")
PUventeHT = InputBox("Indiquez le Prix Unitaire de vente HT", "CREATION D'ARTICLE")

Sheets("base").Range("N1").Value = Ref
Sheets("base").Range("O1").Value = désignation
Sheets("base").Range("P1").Value = PUachatHT
Sheets("base").Range("Q1").Value = PUventeHT

Sheets("base").Select
Range("N1:Q1").Select
Selection.Copy
Range("A" & Range("A65536").End(xlUp).Row + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("base").Select

Sheets("base").Select
Range("N1:Q1").Select
Selection.ClearContents

Range("E" & Range("E65536").End(xlUp).Row + 0).Select
Selection.Copy
Range("E" & Range("E65536").End(xlUp).Row + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False

merci de votre aide

5 réponses

Leahkim Messages postés 3081 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 281
13 août 2008 à 14:54
if (la derniere cellule pleine de la colonne E = 0) then (efface là) sinon (ne fait rien)


ça c'est pas vraiment possible, il n y a pas de "derniere cellule pleine" en VB ..., enfin je pense pas.

il te faut un while:

Dim A as Integer

WHILE (a<ton nombre de case maximum)
IF cells(A,E)=="" THEN row(A).select = true
selection.delete
WEND

la syntaxe est pas excate, mais l'algo est la
-1
julsof Messages postés 13 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 23 septembre 2008 1
13 août 2008 à 15:03
merci pour ta réponse rapide leahkim,

en fait je pense pouvoir trouver une solution à mon problème.
J'arrive à sélectionner la cellule dont j'ai besoin ( à me placer dessus) pas de problème.
Ce que j'essaie de faire sans y arriver encore, c'est de comparer cette cellule et de dire si elle est = O alors je la delete sinon rien

si tu as d'autres idées je suis preneur

merci encore
-1
Leahkim Messages postés 3081 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 281
13 août 2008 à 15:10
"=0"


tu veux dire égale au chiffre 0 ou vide ?

égale a 0 c'est: cells(COORDONNEES).value == 0
vide c'est cells(COORDONNEES).value == ""
-1
julsof Messages postés 13 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 23 septembre 2008 1
13 août 2008 à 15:29
en fait c'est ="0" , le chiffre 0 et je viens de trouver la solution ;-)

If Range("E" & Range("E65536").End(xlUp).Row + 0) = "0" Then Rows(ActiveCell.Row).Delete

'si la cellule au dessus de la derniere cellule de la colonne E est = à 0, alors sélectionne la ligne qui contient la cellule et efface la.

merci de m'avoir aiguillé.
du coup mon code est comme ceci :

Sub creation_article()

Dim creation_article As String


MsgBox "Vous allez créer un nouvel article H2O", vbDefaultButton1
reponse = MsgBox("Voulez-vous continuer ?", vbYesNo)
If reponse = vbNo Then Exit Sub
Ref = InputBox("Indiquez la REFERENCE de l'article", "CREATION D'ARTICLE")
désignation = InputBox("Indiquez DESIGNATION de l'article", "CREATION D'ARTICLE")
PUachatHT = InputBox("Indiquez le Prix Unitaire d'achat HT", "CREATION D'ARTICLE")
PUventeHT = InputBox("Indiquez le Prix Unitaire de vente HT", "CREATION D'ARTICLE")

Sheets("base").Range("N1").Value = Ref
Sheets("base").Range("O1").Value = désignation
Sheets("base").Range("P1").Value = PUachatHT
Sheets("base").Range("Q1").Value = PUventeHT

Sheets("base").Select
Range("N1:Q1").Select
Selection.Copy
Range("A" & Range("A65536").End(xlUp).Row + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("base").Select

Sheets("base").Select
Range("N1:Q1").Select
Selection.ClearContents

Range("E" & Range("E65536").End(xlUp).Row + 0).Select
Selection.Copy
Range("E" & Range("E65536").End(xlUp).Row + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False


If Range("E" & Range("E65536").End(xlUp).Row + 0) = "0" Then Rows(ActiveCell.Row).Delete

Sheets("accueil").Select

End Sub
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Leahkim Messages postés 3081 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 2 mars 2014 281
13 août 2008 à 15:30
met le sujet en résolu alors merci
-1