Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de
tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
sur une case de donnée d'un TCD. Hors donc existe t'il une fonction directe
qui me permettrai d'extraire ces données sources et le cas échéant de les
mettre dans un onglet spécifique.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
lSteph
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
Bonjour,
(S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de
tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show
detail'
A priori la réponse est dans la question, exemple pour une feuille (total
général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test ,
lancée depuis la feuille contenant le tcd
on affiche un message contenant une des valeurs du tableau récupèré selon
ses coordonnées:
Public montab()
Sub tabextcd()
Dim c As Range
On Error GoTo fin
Range("c14").ShowDetail = True
With [a1].CurrentRegion
ReDim montab(.Rows.Count, .Columns.Count)
For Each c In .Cells
montab(c.Row, c.Column) = c.Value
Next
End With
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
fin:
End Sub
Sub test()
tabextcd
On Error GoTo fin
MsgBox montab(2, 3)
fin:
End Sub
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
Alain79
Merci Je vais étudier ta réponse J'en étais en fait à trouver comment repérer par du code la cellule ou se trouve le fameux grand total... C'est une donnée que je ne peux pas entrer en dur... Encore merci pour l'effort Alain79
"lSteph" wrote in message news:ewh7$
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
Merci
Je vais étudier ta réponse
J'en étais en fait à trouver comment repérer par du code la cellule ou se
trouve le fameux grand total...
C'est une donnée que je ne peux pas entrer en dur...
Encore merci pour l'effort
Alain79
"lSteph" <lecocosteph@frite.fr> wrote in message
news:ewh7$8u3GHA.1300@TK2MSFTNGP05.phx.gbl...
Bonjour,
(S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de
tableau ou d'une feuille de calcul les données sources d'un tableau
croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show
detail'
A priori la réponse est dans la question, exemple pour une feuille (total
général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test ,
lancée depuis la feuille contenant le tcd
on affiche un message contenant une des valeurs du tableau récupèré selon
ses coordonnées:
Public montab()
Sub tabextcd()
Dim c As Range
On Error GoTo fin
Range("c14").ShowDetail = True
With [a1].CurrentRegion
ReDim montab(.Rows.Count, .Columns.Count)
For Each c In .Cells
montab(c.Row, c.Column) = c.Value
Next
End With
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
fin:
End Sub
Sub test()
tabextcd
On Error GoTo fin
MsgBox montab(2, 3)
fin:
End Sub
Merci Je vais étudier ta réponse J'en étais en fait à trouver comment repérer par du code la cellule ou se trouve le fameux grand total... C'est une donnée que je ne peux pas entrer en dur... Encore merci pour l'effort Alain79
"lSteph" wrote in message news:ewh7$
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
Alain79
Une autre question A quoi sert la boucle
For Each c In .Cells montab(c.Row, c.Column) = c.Value Next C'est comme si tu voulais tuer des formules dans la zone récupérée mais il
n'y en a pas?! Alain
"lSteph" wrote in message news:ewh7$
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
Une autre question
A quoi sert la boucle
For Each c In .Cells
montab(c.Row, c.Column) = c.Value
Next
C'est comme si tu voulais tuer des formules dans la zone récupérée mais il
n'y en a pas?!
Alain
"lSteph" <lecocosteph@frite.fr> wrote in message
news:ewh7$8u3GHA.1300@TK2MSFTNGP05.phx.gbl...
Bonjour,
(S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de
tableau ou d'une feuille de calcul les données sources d'un tableau
croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show
detail'
A priori la réponse est dans la question, exemple pour une feuille (total
général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test ,
lancée depuis la feuille contenant le tcd
on affiche un message contenant une des valeurs du tableau récupèré selon
ses coordonnées:
Public montab()
Sub tabextcd()
Dim c As Range
On Error GoTo fin
Range("c14").ShowDetail = True
With [a1].CurrentRegion
ReDim montab(.Rows.Count, .Columns.Count)
For Each c In .Cells
montab(c.Row, c.Column) = c.Value
Next
End With
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
fin:
End Sub
Sub test()
tabextcd
On Error GoTo fin
MsgBox montab(2, 3)
fin:
End Sub
For Each c In .Cells montab(c.Row, c.Column) = c.Value Next C'est comme si tu voulais tuer des formules dans la zone récupérée mais il
n'y en a pas?! Alain
"lSteph" wrote in message news:ewh7$
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
lSteph
C'est comme si tu voulais.... non, l'idée est de boucler sur les cellules pour les passer
en valeurs de chaque item du tableau. c.value car j'ai défini c en tant que range pour plus de précision (inutile en apparence)!
... proposé un msg mais bien sûr c'est juste pour exemple visant les données du tableau. J'espère que c'est adaptable à ton objectif.
@+
lSteph
"Alain79" a écrit dans le message de news:
Une autre question A quoi sert la boucle
For Each c In .Cells montab(c.Row, c.Column) = c.Value Next C'est comme si tu voulais tuer des formules dans la zone récupérée mais il
n'y en a pas?! Alain
"lSteph" wrote in message news:ewh7$
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
C'est comme si tu voulais....
non, l'idée est de boucler sur les cellules pour les passer
en valeurs de chaque item du tableau.
c.value car j'ai défini c en tant que range pour plus de précision (inutile
en apparence)!
... proposé un msg mais bien sûr c'est juste pour exemple
visant les données du tableau.
J'espère que c'est adaptable à ton objectif.
@+
lSteph
"Alain79" <desaivresanospam@free.fr> a écrit dans le message de news:
OkjTtGv3GHA.2228@TK2MSFTNGP03.phx.gbl...
Une autre question
A quoi sert la boucle
For Each c In .Cells
montab(c.Row, c.Column) = c.Value
Next
C'est comme si tu voulais tuer des formules dans la zone récupérée mais il
n'y en a pas?!
Alain
"lSteph" <lecocosteph@frite.fr> wrote in message
news:ewh7$8u3GHA.1300@TK2MSFTNGP05.phx.gbl...
Bonjour,
(S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de
tableau ou d'une feuille de calcul les données sources d'un tableau
croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show
detail'
A priori la réponse est dans la question, exemple pour une feuille (total
général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test ,
lancée depuis la feuille contenant le tcd
on affiche un message contenant une des valeurs du tableau récupèré selon
ses coordonnées:
Public montab()
Sub tabextcd()
Dim c As Range
On Error GoTo fin
Range("c14").ShowDetail = True
With [a1].CurrentRegion
ReDim montab(.Rows.Count, .Columns.Count)
For Each c In .Cells
montab(c.Row, c.Column) = c.Value
Next
End With
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
fin:
End Sub
Sub test()
tabextcd
On Error GoTo fin
MsgBox montab(2, 3)
fin:
End Sub
C'est comme si tu voulais.... non, l'idée est de boucler sur les cellules pour les passer
en valeurs de chaque item du tableau. c.value car j'ai défini c en tant que range pour plus de précision (inutile en apparence)!
... proposé un msg mais bien sûr c'est juste pour exemple visant les données du tableau. J'espère que c'est adaptable à ton objectif.
@+
lSteph
"Alain79" a écrit dans le message de news:
Une autre question A quoi sert la boucle
For Each c In .Cells montab(c.Row, c.Column) = c.Value Next C'est comme si tu voulais tuer des formules dans la zone récupérée mais il
n'y en a pas?! Alain
"lSteph" wrote in message news:ewh7$
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
lSteph
J'en étais en fait à trouver comment repérer... ...le fameux grand total... C'est une donnée que je ne peux pas entrer en dur... Public montab()
Sub tabextcd() Dim c As Range On Error GoTo fin Feuil1.PivotTables(1).PivotSelect (xlData) Selection.Cells(Selection.Cells.Count).ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub Sub retest() MsgBox montab(4, 2) End Sub
"Alain79" a écrit dans le message de news: %
Merci Je vais étudier ta réponse J'en étais en fait à trouver comment repérer par du code la cellule ou se trouve le fameux grand total... C'est une donnée que je ne peux pas entrer en dur... Encore merci pour l'effort Alain79
"lSteph" wrote in message news:ewh7$
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub
'lSteph
J'en étais en fait à trouver comment repérer...
...le fameux grand total...
C'est une donnée que je ne peux pas entrer en dur...
Public montab()
Sub tabextcd()
Dim c As Range
On Error GoTo fin
Feuil1.PivotTables(1).PivotSelect (xlData)
Selection.Cells(Selection.Cells.Count).ShowDetail = True
With [a1].CurrentRegion
ReDim montab(.Rows.Count, .Columns.Count)
For Each c In .Cells
montab(c.Row, c.Column) = c.Value
Next
End With
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
fin:
End Sub
Sub test()
tabextcd
On Error GoTo fin
MsgBox montab(2, 3)
fin:
End Sub
Sub retest()
MsgBox montab(4, 2)
End Sub
"Alain79" <desaivresanospam@free.fr> a écrit dans le message de news:
%23AqdHEv3GHA.4748@TK2MSFTNGP04.phx.gbl...
Merci
Je vais étudier ta réponse
J'en étais en fait à trouver comment repérer par du code la cellule ou se
trouve le fameux grand total...
C'est une donnée que je ne peux pas entrer en dur...
Encore merci pour l'effort
Alain79
"lSteph" <lecocosteph@frite.fr> wrote in message
news:ewh7$8u3GHA.1300@TK2MSFTNGP05.phx.gbl...
Bonjour,
(S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de
tableau ou d'une feuille de calcul les données sources d'un tableau
croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show
detail'
A priori la réponse est dans la question, exemple pour une feuille (total
général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test ,
lancée depuis la feuille contenant le tcd
on affiche un message contenant une des valeurs du tableau récupèré selon
ses coordonnées:
Public montab()
Sub tabextcd()
Dim c As Range
On Error GoTo fin
Range("c14").ShowDetail = True
With [a1].CurrentRegion
ReDim montab(.Rows.Count, .Columns.Count)
For Each c In .Cells
montab(c.Row, c.Column) = c.Value
Next
End With
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
fin:
End Sub
Sub test()
tabextcd
On Error GoTo fin
MsgBox montab(2, 3)
fin:
End Sub
J'en étais en fait à trouver comment repérer... ...le fameux grand total... C'est une donnée que je ne peux pas entrer en dur... Public montab()
Sub tabextcd() Dim c As Range On Error GoTo fin Feuil1.PivotTables(1).PivotSelect (xlData) Selection.Cells(Selection.Cells.Count).ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub Sub retest() MsgBox montab(4, 2) End Sub
"Alain79" a écrit dans le message de news: %
Merci Je vais étudier ta réponse J'en étais en fait à trouver comment repérer par du code la cellule ou se trouve le fameux grand total... C'est une donnée que je ne peux pas entrer en dur... Encore merci pour l'effort Alain79
"lSteph" wrote in message news:ewh7$
Bonjour, (S'il existe une fonction plus directe cela m'intéresse aussi)
Je souhaiterai (à partir de code vba) pouvoir récupérer sous forme de tableau ou d'une feuille de calcul les données sources d'un tableau croisé
dynamique (TCD). Un peu comme ce que l'on récupère en faisant 'show detail'
A priori la réponse est dans la question, exemple pour une feuille (total général du tcd en c14):
Range("c14").ShowDetail = True
'pour un tableau (variant) je proposerais cet exemple avec la sub test , lancée depuis la feuille contenant le tcd on affiche un message contenant une des valeurs du tableau récupèré selon ses coordonnées:
Public montab() Sub tabextcd() Dim c As Range On Error GoTo fin Range("c14").ShowDetail = True With [a1].CurrentRegion ReDim montab(.Rows.Count, .Columns.Count) For Each c In .Cells montab(c.Row, c.Column) = c.Value Next End With Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True fin: End Sub Sub test() tabextcd On Error GoTo fin MsgBox montab(2, 3) fin: End Sub