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

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

19 réponses

Répondre au sujet
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 19 août 2006 à 16:43
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 19 août 2006 à 16:41
0
Utile
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
BAUHAUS44 50 Messages postés samedi 19 août 2006Date d'inscription 17 juillet 2010 Dernière intervention - 19 août 2006 à 19:31
0
Utile
J'ai testé et je confirme la deuxième solution est la bonne.

Merci Mortalino
Commenter la réponse de BAUHAUS44
kamGE 11 Messages postés mercredi 22 août 2007Date d'inscription 3 octobre 2008 Dernière intervention - 24 août 2007 à 10:39
0
Utile
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
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 24 août 2007 à 15:57
0
Utile
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
kamGE 11 Messages postés mercredi 22 août 2007Date d'inscription 3 octobre 2008 Dernière intervention - 24 août 2007 à 16:54
0
Utile
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
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 24 août 2007 à 17:09
0
Utile
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
kamGE 11 Messages postés mercredi 22 août 2007Date d'inscription 3 octobre 2008 Dernière intervention - 24 août 2007 à 17:41
0
Utile
est ce que si je veux ajouter d'autres lignes ca va se faire automatiaquement?
Commenter la réponse de kamGE
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 27 août 2007 à 10:21
0
Utile
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
kamGE 11 Messages postés mercredi 22 août 2007Date d'inscription 3 octobre 2008 Dernière intervention - 27 août 2007 à 14:49
0
Utile
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
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 27 août 2007 à 14:54
0
Utile
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
kamGE 11 Messages postés mercredi 22 août 2007Date d'inscription 3 octobre 2008 Dernière intervention - 27 août 2007 à 15:37
0
Utile
oui je veus que la date incremente quel que soit le jour .

 
Commenter la réponse de kamGE
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 27 août 2007 à 15:39
0
Utile
Range("A1").Value = "=Maintenant()"
Commenter la réponse de mortalino
kamGE 11 Messages postés mercredi 22 août 2007Date d'inscription 3 octobre 2008 Dernière intervention - 27 août 2007 à 16:22
0
Utile
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
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 27 août 2007 à 19:58
0
Utile
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
kamGE 11 Messages postés mercredi 22 août 2007Date d'inscription 3 octobre 2008 Dernière intervention - 29 août 2007 à 17:00
0
Utile
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
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 29 août 2007 à 22:19
0
Utile
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
kamGE 11 Messages postés mercredi 22 août 2007Date d'inscription 3 octobre 2008 Dernière intervention - 29 août 2007 à 22:38
0
Utile
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
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 29 août 2007 à 23:46
0
Utile
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.