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
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
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 http://www.developpez.net/forums/ima.../vote1left.gif ci-dessous.
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?
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