Comment supprimer une ligne dans excel via une macro VB [Résolu]

Messages postés
50
Date d'inscription
samedi 19 août 2006
Dernière intervention
17 juillet 2010
- - Dernière réponse : mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
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
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
3
Merci
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

Merci mortalino 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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
Commenter la réponse de mortalino
Messages postés
50
Date d'inscription
samedi 19 août 2006
Dernière intervention
17 juillet 2010
0
Merci
J'ai testé et je confirme la deuxième solution est la bonne.

Merci Mortalino
Commenter la réponse de BAUHAUS44
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Dernière intervention
3 octobre 2008
0
Merci
salut,

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

merci d'avance
Commenter la réponse de kamGE
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
salut,

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

@++

(
Commenter la réponse de mortalino
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Dernière intervention
3 octobre 2008
0
Merci
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.

 
Commenter la réponse de kamGE
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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..

@++

(
Commenter la réponse de mortalino
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Dernière intervention
3 octobre 2008
0
Merci
est ce que si je veux ajouter d'autres lignes ca va se faire automatiaquement?
Commenter la réponse de kamGE
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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>

@++

(
Commenter la réponse de mortalino
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Dernière intervention
3 octobre 2008
0
Merci
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
Commenter la réponse de kamGE
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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()"

@++

(
Commenter la réponse de mortalino
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Dernière intervention
3 octobre 2008
0
Merci
oui je veus que la date incremente quel que soit le jour .

 
Commenter la réponse de kamGE
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
Range("A1").Value = "=Maintenant()"
Commenter la réponse de mortalino
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Dernière intervention
3 octobre 2008
0
Merci
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
Commenter la réponse de kamGE
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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

@++

(
Commenter la réponse de mortalino
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Dernière intervention
3 octobre 2008
0
Merci
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
Commenter la réponse de kamGE
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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" />(
Commenter la réponse de mortalino
Messages postés
11
Date d'inscription
mercredi 22 août 2007
Dernière intervention
3 octobre 2008
0
Merci
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
Commenter la réponse de kamGE
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
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" />(
Commenter la réponse de mortalino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.