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
Rejoignez-nous