VBA et End(xlDown).Row

Signaler
Messages postés
10
Date d'inscription
lundi 2 juillet 2012
Statut
Membre
Dernière intervention
16 juillet 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
bonjour

Je fais un logiciel permettant de gerer une liste de matériel

Je peu en rajouter et en supprimer
Lorsque je supprime une ligne dans un tableau, elle se retrouve donc vide, puis lorsque je rajoute un outil elle vient remplacer la ligne vide.

Cependant parfois... cela ne fonctionne pas et se met sur une ligne vide suivante?

Voici ma procédure

Sub enregistrerprev(g1 As String, g2 As String, g3 As String, g4 As Date, g5 As String, g6 As String, g7 As String, g8 As String, g9 As Date, g10 As String, g11 As String, g12 As String, g13 As String, g14 As Date, g15 As String, g16 As String, g17 As String, g18 As String, g19 As Date, g20 As String, g21 As String, g22 As String, g23 As String, g24 As Date, g25 As String, g26 As String, g27 As String, g28 As String, g29 As Date, g30 As String)

Worksheets(3).Activate

Ligne = Worksheets(3).Range("a1").End(xlDown).Row
If Not Ligne 1 Then Ligne Ligne + 1



Cells(Ligne, 1).Value = 1

Cells(Ligne, 9).Value = compteura

Cells(Ligne, 10).Value = g1
Cells(Ligne, 11).Value = g2
Cells(Ligne, 12).Value = g3
Cells(Ligne, 13).Value = g4
Cells(Ligne, 14).Value = g5
Cells(Ligne, 15).Value = g6
Cells(Ligne, 16).Value = g7
Cells(Ligne, 17).Value = g8
Cells(Ligne, 18).Value = g9
Cells(Ligne, 19).Value = g10
Cells(Ligne, 20).Value = g11
Cells(Ligne, 21).Value = g12
Cells(Ligne, 22).Value = g13
Cells(Ligne, 23).Value = g14
Cells(Ligne, 24).Value = g15
Cells(Ligne, 25).Value = g16
Cells(Ligne, 26).Value = g17
Cells(Ligne, 27).Value = g18
Cells(Ligne, 28).Value = g19
Cells(Ligne, 29).Value = g20
Cells(Ligne, 30).Value = g21
Cells(Ligne, 31).Value = g22
Cells(Ligne, 32).Value = g23
Cells(Ligne, 33).Value = g24
Cells(Ligne, 34).Value = g25
Cells(Ligne, 35).Value = g26
Cells(Ligne, 36).Value = g27
Cells(Ligne, 37).Value = g28
Cells(Ligne, 38).Value = g29
Cells(Ligne, 39).Value = g30

Worksheets(1).Activate

End Sub

8 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
Je ne comprends pas cette phrase :
Lorsque je supprime une ligne dans un tableau, elle se retrouve donc vide

Je suis presque certain de ce que la précision que tu apporteras pour expliquer son sens te guidera vers la solution que tu cherches !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
10
Date d'inscription
lundi 2 juillet 2012
Statut
Membre
Dernière intervention
16 juillet 2012

Enfaite je supprime pas la ligne ,je supprime toutes les valeurs contenu dans la ligne !
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
cela ne s'appelle alors pas "supprimer", mais "effacer".
La terminologie est importante.
Et pourquoi donc ne pas supprimer (bien plus logique) ?
Par ailleurs :
Regarde ce que ferait ceci (petit exemple) :
Private Sub CommandButton2_Click()
  alimente 2, Array("a", "b", "c", "d")
End Sub

Private Sub alimente(ou As Long, toto)
  Sheets("Feuil1").Range(Cells(ou, 1), Cells(ou, UBound(toto) + 1)).Value = toto
End Sub

et utilise-le doinc dans ton code, à la place de ton "déploiement" de lignes.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Supprimer réellement et ajouter à la fin est de loin la solution la moins maladroite et la plus propre.
Mais si tu tiens tant à effacer puis retrouver la première ligne vide (je te déconseille une telle méthode qui laissera ici et là des lignes blanches résultant d'effacements en nombre supérieur aux ajouts) :
regarde ce que fais ceci :
 MsgBox Sheets("Feuil1").Range("A:A").SpecialCells(xlCellTypeBlanks).Row


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
10
Date d'inscription
lundi 2 juillet 2012
Statut
Membre
Dernière intervention
16 juillet 2012

je n'arrive pas à faire ce que tu dis

Ce qui est bizzare c'est que jutilise 2 procédures qui ont le meme code pratiquement

la première procédure, elle met bien mes valeurs sur la ligne vide mais la deuxième parfois elle me les met sur la ligne vide et parfois c'est décalé .

Esce qu'il ya un code pour que vba ne garde pas en mémoire les valeurs rajouter et qu'il recommence la recherche de cellule vide?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Comment cela, tu "n'arrives pas à faire" ce que je t'ai dit ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
10
Date d'inscription
lundi 2 juillet 2012
Statut
Membre
Dernière intervention
16 juillet 2012

j'ai remplacer ma ligne
Ligne = Worksheets(3).Range("a1").End(xlDown).Row

par
ligne = Worksheets(3).SpecialCell(xlCellTypeBlanks).Row

et il me met erreur 438
Propriété ou méthode non géré par cet objet
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
et tu crois que tu sais au moins copier/coller ?
Je ne le crois pas.
Pourquoi, selon toi ? === >> cherche tes deux erreurs !
Je suis devenu trop vieux pour continuer dans ces conditions. Pardonne-moi.
Je laisse ma place à ceux qui voudront bien continuer.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ