Suppression de données

  • Initiateur de la discussion olette
  • Date de début
O

olette

Guest
Bonjour,

Je construit une base de données (fichier client) et j'ai un petit probleme de trou ...
Je m'explique : J'ai une commande qui me permet de supprimer les informations dans ma base de données mais je souhaiterai qu'une fois que la ligne est vide, les données se trouvant dans les lignes sous-jacentes "remonte" dans mon tableau et comblent les trous ...

Auriez vous une solution ?

Merci d'avance
 
R

romfret

Guest
Bjr,



Il faut effectuer un tri.
Le code d'un tri en vba :




'code pour trier les données

Range("La plage de cellule").Sort , Key1:=Range("H3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom




Voila ce que j'utilise .



@mic@lement, romfret
 
R

romfret

Guest
Re,



je remet le code avec une précision en + :




'code pour trier les données

Range("Ta plage de cellule").Sort , Key1:=Range("la collone par laquelle tu veux ranger les lignes "), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


Voila @+ ROMFRET
 
O

olette

Guest
Romfret,

Merci pour le tuyau mais cela ne repond pas à toutes mes attentes ...
En effet, meme en effectuant un tri, chacun de mes clients porte un numéro et si mes données remontent, je vais me retrouver avec une numero tout à la fin de ma liste qui n'a aucune donnée ...
 
D

Dan

Guest
Bonjour Olette,

Tu peux aussi ajouter cette macro qui te donnes la possibilité de supprimer une ligne ou non.

Sub DeleteItem()
' Macro pour supprimer un enregistrement
'
Dim a
a = MsgBox("Voulez-vous vraiment supprimer l'enregistrement sélectionné?", vbYesNo + vbQuestion, "Supprimer")
'Message d'avertissement de suppression d'un enregistrement
If a = vbYes Then ' L’utilisateur a choisit Yes.
Selection.EntireRow.Delete 'Supprime la ligne.
End If ' L’utilisateur a choisi No.
End Sub

@+

Dan
 
C

chris

Guest
Bonjour,
Tu peux utiliser la fonctionnalité données, grille : de là tu peux, entre autres, rechercher des lignes et les supprimer. Cela tasse automatiquement.
Sinon il faudrait repartir de la commande qui supprime les données et la compléter mais tu n'as pas précisé quelle manip ou quel code tu utilises.
Chris
 
O

olette

Guest
Voilà ma fonction supprime

Private Sub CommandButton1_Click

Application.ScreenUpdating = False

i=0
A=ComboBox1
Sheets("Archives").Select
Range ("B6").Select 'Première case ou j'ai un nom client
Do
If ActiveCell.Value = A Then GoTo Supprime Else ActiveCell.Offset (1, 0).Select
Loop Until ActiveCell.Value = A

Supprime :

Selection.ClearContents
ActiveCell.Offset (0, 1).Select
....
...

Application.ScreenUpdating = True

End Sub



Voilà pour le code, il y a surement plus siple mais on fait avec ce qu'on connait ;)

Merci d'avance si tu as une solution

Olette
 
M

Moa

Guest
Salut Olette !

Pourquoi ne pas supprimer tout de suite la ligne, au lieu de la vider, puis ensuite de la vider :

En tout cas voilà une macro que j'utilise, à toi de l'adapter :

Sub DeleteUn()

I = 1
While Range("A3").Offset(I).Value <> ""
If Range("A3").Offset(I).Value = 1 Then
Range("A3").Offset(I).EntireRow.Delete

I = I - 1
End If
I = I + 1
Wend

End Sub

@ +

Moa
 
D

Dan

Guest
Olette,

Pourquoi n'introduis-tu pas la macro que je te propose (post de 15h37) à la place de celle que tu as faite dans "Supprime", car si je comprends bien tu voudrais supprimer la ligne si dans une même colonne, la cellule active contient la valeur A.


@+

Dan
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16