Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
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 20/08/2011, 07h22   #1
Candidat au titre de Membre du Club
 
Homme Claude Fontanille
Ingénieur sécurité
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Claude Fontanille
Localisation : France, Corrèze (Limousin)

Informations professionnelles :
Activité : Ingénieur sécurité
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 38
Points : 11
Points : 11
Par défaut Suppression feuilles spécifiques

Bonjour le forum

J'ai le code ci-dessous qui fonctionne correctement et qui me supprime bien la feuille:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Sub Delete ()
For Each Feuille In ActiveWorkbook.Wofsheets
If Left (Ucase(Feuille.Name, 7) = "Contrat" Then
Application.DisplayAlerts = False
Feuille.Delete
Application.DisplayAlerts = True
Exit For
End If
Next Feuille
End Sub
Ce que je souhaiterais, c'est de modifier plusieurs feuilles (et uniquement celles-ci) qui commencent par "contrat"
Les feuilles nommées peuvent être du style:
"contrat (1)" ou bien "contrat N°1" ainsi de suite...

D'avance merci

Cordialement
CLAUDE19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 07h42   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 619
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 619
Points : 30 959
Points : 30 959
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Je ne comprends pas ta question, car à priori ton code fonctionne, alors ?

Que veux-tu dire par modifier ?

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 00
Vieux 20/08/2011, 09h28   #3
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Une solution

Code :
1
2
3
4
5
6
7
Sub Test()
    For Each Feuille In ActiveWorkbook.Worksheets
        If Left(UCase(Feuille.Name), 7) = "CONTRAT" Then
            MsgBox "Action à réaliser sur la feuille " & Feuille.Name
        End If
    Next Feuille
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 11h00   #4
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 682
Points : 4 682
Citation:
Envoyé par CLAUDE19 Voir le message
J'ai le code ci-dessous
Code :
1
2
3
4
 
Sub Delete ()
 
End Sub
Bonjour,

A éviter : employer des mots clefs VBA en noms de procédures, variables etc !

ici Delete est le nom d’une Méthode que tu emploies d'ailleurs ensuite,

Sinon même remarque que Philippe

cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 15h30   #5
Candidat au titre de Membre du Club
 
Homme Claude Fontanille
Ingénieur sécurité
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Claude Fontanille
Localisation : France, Corrèze (Limousin)

Informations professionnelles :
Activité : Ingénieur sécurité
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 38
Points : 11
Points : 11
Par défaut Suppression feuilles spécifiques

Je vais avoir du mal à être plus clair, mais je vais essayer.

Sur la feuille "contrat" c'est ok. Mais les futurs utilisateurs, vont créer à l'utilisation du fichier, des feuilles commencant par "contrat" et chacune de ces feuilles crées vont avoir des extensions aprés un espace, exemple "contrat N1" ou "contrat 12" ou "contrat AB".
Toutes ces feuilles et uniquement celles ci (commencant par "contrat") je souhaite qu'elles soient supprimées à la fermeture du fichier.

Ma question est: Comment puis je rédiger ma ligne de code pour que ces feuilles soient supprimées?
CLAUDE19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 15h45   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
en corrigeant tes 3 premières lignes de codes

Code :
1
2
3
4
Sub DeleteFeuille () 'Eviter les mots réservés comme nom ..
For Each Feuille In ActiveWorkbook.Worksheets 'Erreur de framme 
If Left (Ucase(Feuille.Name, 7) = "CONTRAT" Then 'Ucase c'est pour majuscule..
(...)
ce n'est pas bon ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 18h02   #7
Candidat au titre de Membre du Club
 
Homme Claude Fontanille
Ingénieur sécurité
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Claude Fontanille
Localisation : France, Corrèze (Limousin)

Informations professionnelles :
Activité : Ingénieur sécurité
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 38
Points : 11
Points : 11
Par défaut Suppression feuilles spécifiques

Non, ce n'est pa ce que je souhaite. Ce sont les lignes que j'ai écris au début de la discussion.
Ce que je souhaite c'est supprimer, toutes les feuilles contenant "Contrat".
Donc la feuille peut s'appeler "1ier contrat" ou bien "Contrat début" ou bien Fin de contrat" etc...

Mais je ne souhaite pas, que les autres feuilles (ne contenant pas "Contrat" soit supprimer.

Et ceci, lorsque l'utilisateur ferme son fichier. Et donc sans action de sa part.

Mais peut être que cela n'est pas possible
CLAUDE19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 18h40   #8
Candidat au titre de Membre du Club
 
Homme Claude Fontanille
Ingénieur sécurité
Inscription : août 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Claude Fontanille
Localisation : France, Corrèze (Limousin)

Informations professionnelles :
Activité : Ingénieur sécurité
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 38
Points : 11
Points : 11
Par défaut Suppression feuilles spécifiques

Je crois avoir trouvé, les lignes ci-dessous fonctionnent

Code :
1
2
3
4
5
6
7
8
9
10
11
 Sub DeleteFeuille()
Dim i
Application.DisplayAlerts = False
For i = Worksheets.Count To 1 Step -1
If Left (Sheets(i).Name, 7) = "Contrat" Then
Sheets (i).Select
ActiveWindow.SelectedSheets.Delete
Else
End If
Next i
End Sub
Merci à tous

Cordialement
CLAUDE19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2011, 19h35   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
ton dernier code ne fait rien de plus que le précédent..! .IL ne traite que les noms débutant par contrat tu devrai regarder InStr. de façon à prendre en compte le fait nouveau de ton dernier post "Contrat" peu-être situé n'importe-ou dans le nom de la feuille et pas seulement au début comme annoncé précédemment.
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h34.


 
 
 
 
Partenaires

Hébergement Web