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 17/08/2011, 09h47   #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 ZoneTexte macro

Bonjour le forum,

J'ai une macro, qui fonctionne bien. Elle a pour but de copier coller une feuille d'un fichier excel vers un 2 nd fichier excel en créant un onglet.
Sur la 1ière feuille j'ai deux ZoneTexte qui déclenchent 2 macros différentes.
Ces macros sont utilisées sur la feuille du 1ier fichier. Et bien sur lorsque cette feuille est copiée dans le 2iéme fichier ces 2 TexteZone apparaissent, alors qu'elles ne servent à rien dans ce fichier.
Comment faire pour qu'aprés la copie ces deux ZoneTexte n'apparaissent plus?
Ci-dessous les lignes de ma macro enregistrement.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 ' Macro utilisée pour enregistrer l'analyse de risque dans le fichier HISTO.xls
Sub EnrHisto()
nom_du_fichier_initial = ActiveWorkbook.Name
'Supprime les caractères .XLS
nom_du_fichier = Left(nom_du_fichier_initial, _
                            Len(nom_du_fichier_initial) - 4)
nom_du_fichier = UCase(nom_du_fichier)
 
'----------------
If Right(nom_du_fichier, 5) = "HISTO" Then
    nom_du_fichier = Left(nom_du_fichier, _
                            Len(nom_du_fichier) - 6)
    nom_du_fichier = nom_du_fichier + ".xls"
    position_onglet = 2
    ' Supprime les boutons
 
Else
    nom_du_fichier = nom_du_fichier + " HISTO.xls"
    position_onglet = 1
 
End If
nom_fiche_active = ActiveSheet.Name
 
If nom_fiche_active <> "Fiche prépa" Then
    Msg = "VOUS N'ETES PAS SUR VOTRE ANALYSE DE RISQUE!!"
    Title = "Attention ERREUR!!!!!"   ' Définit les titres.
    ' Affiche le message.
    Réponse = MsgBox(Msg, Style, Title)
Else
    Réponse = 7
End If
 
On Error GoTo Affichage_message_erreur
 
Select Case Réponse
Case 7
    Sheets(nom_fiche_active).Copy Before:=Workbooks( _
        nom_du_fichier).Sheets(position_onglet)
 
Case 6
    nombre_de_feuille = Sheets.Count
    If nombre_de_feuille > 1 Then
        Sheets(nom_fiche_active).Move Before:=Workbooks( _
            nom_du_fichier).Sheets(position_onglet)
    Else
        Msg = "Il n'est pas possible de déplacer une feuille seule" & Chr(13) & _
                "Pour la transférer, choisissez : COPIER"
        Style = vbOK + vbExclamation  ' Définit les boutons.
        Title = "Erreur mineure"   ' Définit les titres.
        ' Affiche le message.
        Réponse = MsgBox(Msg, Style, Title)
    End If
Case Else
    Windows(nom_du_fichier_initial).Activate
    On Error GoTo 0
    Exit Sub
End Select
 
On Error GoTo 0
 
If nom_fiche_active = "Fiche prépa" Then
    'Affiche message : nom de la feuille
    Msg = "Vous enregistrez votre analyse de risque dans le fichier HISTO. Veuillez lui donner un nom!!!"
    Title = "Copie de l'analyse de risque dans un autre fichier"   ' Définit les titres.
    Réponse = InputBox(Msg, Title)
    If Réponse = "" Then
        Windows(nom_du_fichier_initial).Activate
        Exit Sub
    End If
    Sheets(position_onglet).Name = Réponse
End If
 
Windows(nom_du_fichier_initial).Activate
Exit Sub
 
Affichage_message_erreur:
    Msg = "Le fichier de copie n'a pas été trouvé."
    Style = vbOKOnly + vbExclamation  ' Définit les boutons.
    Title = "Erreur pénalisante"   ' Définit les titres.
    ' Affiche le message.
    Réponse = MsgBox(Msg, Style, Title)
    Exit Sub
Resume
 
End Sub

D'avance merci pour votre aide

Cordialement
CLAUDE19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h27   #2
Membre éclairé
 
Inscription : juillet 2011
Messages : 141
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 141
Points : 382
Points : 382
Par défaut Effacer TextBox d'une feuille Excel copiée en VBA

Dans Excel, cliquez sur l'onglet de la feuille copiée dans un classeur d'archive pour la rendre active et visible.
Ouvrir le VBE par (Alt+F11).

Citation:
Envoyé par CLAUDE19 Voir le message
Comment faire pour qu'aprés la copie ces deux ZoneTexte n'apparaissent plus?
Il s'agit d'identier le type des deux ZoneTexte : Shapes ou OLEObjects ?

Dans la fenêtre d'Exécution immédiate (Ctrl+G) du VBE d'Excel, copier-coller et valider par ENTER :
Code :
For Each txtbox in ActiveSheet.Shapes: ? txtbox.Name: Next
Text Box 1

Code :
For Each txtbox in ActiveSheet.OLEObjects: ? txtbox.Name: Next
...
Une fois que vous aurez retrouvé le nom de vos deux ZoneTexte soit dans Shapes soit dans OLEObjects, il ne restera plus qu'à les effacer.
Code :
ActiveSheet.Shapes("Text Box 1").Delete
On a effacé la Shape de nom "Text Box 1".

Vous en déduirez la macro d'effacement de vos deux ZoneTexte en remplaçant ActiveSheet par le nom de la feuille copiée dans le classeur d'archive.

Une autre façon de faire si vos deux ZoneTexte ne sont ni dans Shapes ni dans OLEObjects est d'analyser le code généré par l'enregistreur de macro quand vous effacez manuellement à la souris les deux ZoneTexte de la feuille copiée.

Notez que les deux macros qui gérent les deux ZoneTexte seront toujours présentes dans le classeur copié et ne pourront plus fonctionner si on efface leurs ZoneTexte.
___________

En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vert ci-dessous.
MattChess est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 16h33   #3
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 ZoneTexte macro

Bonjour

Et merci pour votre réponse.
Pour la suppression de la feuille copiée, comment je peux faire pour l'identifier car elle sera nommée par chaque utilisateur au moment de l'enregistrement de la feuille dans le fichier archive?
CLAUDE19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 18h13   #4
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 ZoneTexte macro

J'ai trouvé, il suffisait de rentrer les lignes ci-dessous:

Code :
1
2
3
4
5
6
7
 
' Ligne qui nomme l'onglet de la nouvelle feuille dans le fichier HISTO
Sheets(position-onglet).Name=Réponse
' Lignes qui supprime les boutons de macro
Sheets(position-onglet).Shapes("ZoneTexte 10").Delete
Sheets(position-onglet).Shapes("ZoneTexte 11").Delete
End if
Et encore merci
CLAUDE19 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 06h49.


 
 
 
 
Partenaires

Hébergement Web