Comment supprimer une ligne dans excel via une macro VB

Résolu
BAUHAUS44
Messages postés
50
Date d'inscription
samedi 19 août 2006
Statut
Membre
Dernière intervention
17 juillet 2010
- 19 août 2006 à 16:37
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
- 29 août 2007 à 23:46
Bonjour,
J'utilise excel et visual basic pour créer des macros. Quel est le terme utiliser dans VB pour supprimer une ligne dans excel via la macro et non effacer le contenu (ClearContents) ? J'ai essayé Delet mais sans succès.
Quelqu'un a la solution ?

D'avance merci

19 réponses

mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
19 août 2006 à 16:43
Arf, légère correction :

en VBA :

Sheets("NomFeuille").Rows(N° de la ligne).Delete Shift:=xlUp

en VB6 : (tu dois faire un set de ton Classeur)

xlBook.Sheets("NomFeuille").Rows(N° de la ligne).Delete Shift:=xlUp



(j'ai omis le paramètre Shift, tu as aussi xlDown, xlLeft ou xlRight)

@++

mortalino
3
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
19 août 2006 à 16:41
Salut,

en VBA :

Sheets("NomFeuille").Rows(N° de la ligne).Delete

en VB6 : (tu dois faire un set de ton Classeur)

xlBook.Sheets("NomFeuille").Rows(N° de la ligne).Delete

@++

mortalino
0
BAUHAUS44
Messages postés
50
Date d'inscription
samedi 19 août 2006
Statut
Membre
Dernière intervention
17 juillet 2010

19 août 2006 à 19:31
J'ai testé et je confirme la deuxième solution est la bonne.

Merci Mortalino
0
kamGE
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
3 octobre 2008

24 août 2007 à 10:39
salut,

est ce que tu sais comment ajouter une ligne dans un classeur on VB please?

merci d'avance
0

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

Posez votre question
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
24 août 2007 à 15:57
salut,

oui, c'est la même syntaxe à part que la méthode s'appelle Insert (au lieu de Delete)

@++

(
0
kamGE
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
3 octobre 2008

24 août 2007 à 16:54
ce que j'aimerais faire c'est mettre un bouton"Ajouter article" et quand je clic dessus ca me donne un popup qui me demande "la désignation,le code, et le part nuber) de l'article et quand je clic sur entrée il enregistre la ligne dans le classeur.

j'ai vu dans le forum que tu as resolu beaucoup de problemes.
est ce que tu peux m'aider s'il te plais? et merci d'avance.

 
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
24 août 2007 à 17:09
pour récupérer la première ligne vide dans ton classeur :

Dim PremiereLigneVide As Long
PremiereLigneVide = Range("A65536").End(xlUp).Row + 1

Ensuite, il te faut faut créer un UserForm dans l'éditeur VB, place tes controles et un bouton.
Avec des TextBox sur le UserForm, il te suffit d'appeler la propriété Text du contrôle pour récupérer la valeur.
Et pour l'inscrire dans Excel, faudra se servir de la variable PremiereLigneVide qui contient la valeur de la ligne prête à recevoir une nouvelle donnée :

exemple :
Cells(PremiereLigneVide, 1).Value = TextBox1.Text
Etc..

@++

(
0
kamGE
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
3 octobre 2008

24 août 2007 à 17:41
est ce que si je veux ajouter d'autres lignes ca va se faire automatiaquement?
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
27 août 2007 à 10:21
oui, en calculant la première ligne vide automatiquement pour aout, suffit de faire dans le "moins 1" pour trouver dynaiquement la dernière ligne utilisée :
PremiereLigneVide = Range("A65536").End(xlUp).Row<strike> + 1</strike>

@++

(
0
kamGE
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
3 octobre 2008

27 août 2007 à 14:49
oui super ca marche exactement comme je veux.
merci beaucoup.
sinon, pour mettre la date dans une cellule (j'aimerais que cette date soit dynamique, c'est a dire elle incremente avec les jours).

merci d'avance
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
27 août 2007 à 14:54
elle s'incrémente quand, on moment du code, ou quel que soit le jour ?

Range("A1").Value = Date
Te mettra dans A1 la date au moment du code, mais si tu reviens le lendemain, la date ne change pas.
Si veux l'inverse, c'est Range("A1").Value = "=Maintenant()"

@++

(
0
kamGE
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
3 octobre 2008

27 août 2007 à 15:37
oui je veus que la date incremente quel que soit le jour .

 
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
27 août 2007 à 15:39
Range("A1").Value = "=Maintenant()"
0
kamGE
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
3 octobre 2008

27 août 2007 à 16:22
j'ai ecris le code que tu m'as donné, j'ai changé la date de mon PC pour voir si la date change avec ou pas!!!ca ne marche pas!!!!
peut etre j'ai mal compris le fonctionnement du code?!!

merci de ton aide
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
27 août 2007 à 19:58
Si, faut rafraichir les données.
2 solutions

* Appuie sur F9 (c'est comme F5 sur une fenêtre, ça rafraichit)
* Double clique sur la cellule et appuie sur Entrée

@++

(
0
kamGE
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
3 octobre 2008

29 août 2007 à 17:00
Done, merci ca marche.
une derniére question et je tembéte plus.
j'au fais un code pour que qunad je clic sur mon fichier excel(sur le bureau) il m'ouvre un userform(page d'accueil) en premier mais ca marche pas.
voici le code:

Private Sub UserForm_Initialize()
On Error Resume Next
    Sheets("recette").Cells.ClearContents
    Dim marec As recette
Open "TESTFILE" For Random As #1 Len = Len(marec)
merci d'avance
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
29 août 2007 à 22:19
Heu je comprends pas trop !

En fait, faut faire l'inverse (pas partir du code Initialize de ton UserForm, mais partir de WorkBook_Open du classeur) :

Dans

Il faut mettre
NomDuUserForm.Show

@++

<hr width="100%" size="2" />(
0
kamGE
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
3 octobre 2008

29 août 2007 à 22:38
Ahhhhhhhhhh ok , ca marche comme je veux, tu es fort toi !!!!!:) merci beaucoup mortalino tu m'as trop aidé.

est ce que si jai d'autrs probleme je peux soliciter ton aide?


 


merci encore mortalino et merci vbvrance.


kamGE
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
29 août 2007 à 23:46
En fait, pose ta question normalement sur vbfrance quand tu en as besoins, je passe régulièrement (presque tous les jours) mais il y a aussi d'autres membres réguliers, qui sont très bons et meilleurs que moi en vba (et formules Excel) et qui pourront donc t'aider aussi quand ils passeront

En tout cas, content de t'avoir aidé 

@++

<hr width="100%" size="2" />(
0