Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Contribuez
Contribuez Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/05/2011, 20h00   #1
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
Par défaut suppression d'une ligne sélectionnée

bonjour a tous
voici un code qui permet de supprimer une ligne précise après avoir cliquer dans la cell de la ligne concernée
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub CommandButton2_Click()
Dim Msg, Style, Title
If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "ATTENTION SUPRESSION ACTIVEE") = vbOK Then ' Définit le message.
'récupère le n° de la ligne
maligne = ActiveCell.Row
'nomme la variable "cel1" avec la référence de la cellule , "b4" par exemple
cel1 = "B" & maligne
cel2 = "P" & maligne
'nomme "cel1" la cellule, "b4" par exemple
Range(cel1).Name = "cel1"
Range(cel2).Name = "cel2"
'sélectionne les cellules à supprimer (exemple b4:P4) => et  remonte les cellules d'1 cran cad b5.P65536 en b4.h65535
'et ajoute la 65536 vide, mais attention à cette formule, car si il y a des donnees à droite ou à gauche, en a4 ou
'au delà de P4, dans notre exemple, elles ne bougent pas
Range("cel1:cel2").Delete Shift:=xlUp
ActiveWorkbook.Names("cel1").Delete     'supprime le nom "cel1"
ActiveWorkbook.Names("cel2").Delete
Else    ' L'utilisateur a choisi Non.
    MsgBox "suppression annulée" ' Effectue une action.quitter"
    End If
End Sub
bien sûr il faudra ajuster le nombre et la quantité de colonne concerné par la suppression

bon courage

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 17/05/2011, 20h24   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il serait bon de revoir ton code, car il est loin d'être académique.

Tu déclares trois variables (Dim Msg, Style, Title) que tu n'utilises pas et qui de plus n'étaient pas typés.

Tu utilises des variables que tu ne déclares pas : maligne, cel1 et cel2.

De plus ton code n'est pas indenté pour offrir une meilleur visibilité de lecture.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/05/2011, 19h29   #3
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
bonsoir Philippe
avec mes excuses j'ai mis le code d'essai que j'ai fait voici le bon qui ressemble comme 2 goute d'eau a l'autre
que veux tu dire par "indenté"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub CommandButton2_Click()
Dim maligne, cel1, cel2 As String
If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "ATTENTION A L'OUBLI") = vbOK Then ' Définit le message.
'récupère le n° de la ligne
maligne = ActiveCell.Row
'nomme la variable "cel1" avec la référence de la cellule , "b4" par exemple
cel1 = "B" & maligne
cel2 = "P" & maligne
'nomme "cel1" la cellule, "b4" par exemple
Range(cel1).Name = "cel1"
Range(cel2).Name = "cel2"
'sélectionne les cellules à supprimer (exemple b4:P4) => et  remonte les cellules d'1 cran cad b5.P65536 en b4.h65535
'et ajoute la 65536 vide, mais attention à cette formule, car si il y a des donnees à droite ou à gauche, en a4 ou
'au delà de P4, dans notre exemple, elles ne bougent pas
Range("cel1:cel2").Delete Shift:=xlUp
ActiveWorkbook.Names("cel1").Delete     'supprime le nom "cel1"
ActiveWorkbook.Names("cel2").Delete
Else    ' L'utilisateur a choisi Non.
    MsgBox "suppression annulée" ' Effectue une action.quitter"
    End If
End Sub
voila qui fonctionne mieux
cordialement

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 10h45   #4
Rédacteur/Modérateur
 
Avatar de fring
 
Homme Fred Thomas
Engineering
Inscription : février 2008
Messages : 3 484
Détails du profil
Informations personnelles :
Nom : Homme Fred Thomas
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : Engineering

Informations forums :
Inscription : février 2008
Messages : 3 484
Points : 6 535
Points : 6 535
Citation:
Envoyé par grisan29 Voir le message
que veux tu dire par "indenté"
Indenté = insérer des retraits dans le code afin de pouvoir plus facilement déceler le début et la fin des différentes opérations, par exemple :
Code sans indentation :
1
2
3
4
5
6
7
For x = 1 to 5
If blabla & x = "..." Then
With Sheets(1)
.Range("A1") = "OK"
End With
End If
Next

Code avec indentation :
1
2
3
4
5
6
7
For x = 1 to 5
    If blabla & x = "..." Then
        With Sheets(1)
            .Range("A1") = "OK"
        End With
    End If
Next
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/05/2011, 18h22   #5
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 828
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 828
Points : 2 854
Points : 2 854
Envoyer un message via MSN à patricktoulon
Par défaut puré de zut

bonjour grizan

tu poste le code que j'avais a moitié corrigé

tu devrais poster le dernier que je t'ai envoyé par mail

effectivement si tu a regardé le dernier code que je t'ai envoyé j'avais supprimé tout ce qui n'était pas utilisé comme fring te la suggéré

Code :
1
2
3
4
5
6
7
8
9
10
Private Sub CommandButton2_Click()
Dim maligne As Long
'Définit le message.
If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "ATTENTION A L'OUBLI") = vbOK Then ' 'récupère le n° de la ligne
maligne = ActiveCell.Row
Rows(maligne & ":" & maligne).Delete Shift:=xlUp
Else    ' L'utilisateur a choisi Non.
    MsgBox "suppression annulée" ' Effectue une action.quitter"
    End If
End Sub
çà a du mal a rentrer

suggestion du jour:
encore une fois je ne saurais que trop te conseiller de nettoyer tes codes quand tu est arrivé a une formule satisfaisante

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 12
Vieux 20/05/2011, 00h16   #6
Rédacteur/Modérateur
 
Avatar de fring
 
Homme Fred Thomas
Engineering
Inscription : février 2008
Messages : 3 484
Détails du profil
Informations personnelles :
Nom : Homme Fred Thomas
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : Engineering

Informations forums :
Inscription : février 2008
Messages : 3 484
Points : 6 535
Points : 6 535
Ceci :
Code :
1
2
maligne = ActiveCell.Row
Rows(maligne & ":" & maligne).Delete Shift:=xlUp
Peut se résumer à : Rows(ActiveCell.Row).Delete
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/05/2011, 00h54   #7
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonsoir
Ou bien
Code :
ActiveCell.EntireRow.Delete
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 20/05/2011, 12h48   #8
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 828
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 828
Points : 2 854
Points : 2 854
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour fring et mercatog

oui effectivement

je suis le premier partisan pour la réduction de code les deux sont bien mais faut -il encore quelles soit comprises quoi que la les expressions sont relativement explicites

c'est ce que j'essaie d'expliquer a grizan (l'importance du nettoyage du code
surtout en cas d'échange)



bien que dans le cas de grizan

on pourrais garder la variable"maligne"

et faire qu'une seule macro pour monter descendre ou supprimer la ligne
avec simplement un "select case" ça réduirais encore plus le code

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 20/05/2011, 20h06   #9
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
bonjour a vous

voici le code que Patrick m'a posté qui fonctionne bien sauf si c'est la ligne du bas qui est supprimée car la suppression supprime également la bordure basse
Code :
1
2
3
4
5
6
7
Dim maligne As Long
If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "SUPPRESSION IRREVERSIBLE") = vbOK Then ' Définit le message.
'récupère le n° de la ligne
ActiveCell.EntireRow.Delete 'merci Mercatog
Else    ' L'utilisateur a choisi Non.
    MsgBox "suppression annulée" ' Effectue une action.quitter"
    End If
Bonne soirée

cordialement

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2011, 14h50   #10
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 828
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 828
Points : 2 854
Points : 2 854
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour grizan


ca n'est pas mon code ca
moi je n'ai pas utilisé ca:
Code :
ActiveCell.EntireRow.Delete 'merci Mercatog
sinon la variables maligne sert a rien

et j'ai preciser dans une de mes reponses precedantes que cette variable pourrais servir plus tard pour remettre le cadre autour des celules par exemple

cela dit la solution de mercatog est plus que bien


au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/06/2011, 12h29   #11
Membre habitué
 
pascal
artisan poseur
Inscription : octobre 2006
Messages : 342
Détails du profil
Informations personnelles :
Nom : pascal

Informations professionnelles :
Activité : artisan poseur
Secteur : Bâtiment

Informations forums :
Inscription : octobre 2006
Messages : 342
Points : 137
Points : 137
bonjour a vous tous

voici donc avec retard le code que Patrick m'avait compresser
Code :
1
2
3
4
5
6
7
8
9
10
Private Sub CommandButton1_Click()
Dim Msg, Style, Title
If MsgBox("êtes vous sur de vouloir supprimer la ligne sélectionnée?", vbOKCancel + vbDefaultButton2, "ATTENTION A L'OUBLI") = vbOK Then ' Définit le message.
'récupère le n° de la ligne
maligne = ActiveCell.Row
Rows(maligne & ":" & maligne).Delete Shift:=xlUp
Else    ' L'utilisateur a choisi Non.
    MsgBox "suppression annulée" ' Effectue une action.quitter"
    End If
End Sub
voila ce qui m'apprendra de poster un code modifié apres le premier reçu

cordialement

Pascal
grisan29 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h55.


 
 
 
 
Partenaires

Hébergement Web