Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classeur actif ???

4 réponses
Avatar
JPascal
Bonsoir,

Je deviens fou avec ce pb (que j'avais déjà soumis ici par la passé) !

Voici le code. Le pb est décrit après "Stop"
L'idée, c'est que j'ouvre un premier classeur. Je lance une macro à
partir d'un bouton qui exécute le code dans une feuille ...
A un moment donné, j'ouvre un classeur en ".csv" qui se trouve sur le
bureau et je veux copier son contenu dans une feuille du premier
classeur ouvert ... Et là, problème : où est le classeur actif (un test
m'induit apparemment en erreur).

'------
Sub Import_CSV_click()
Dim NomFichierComptes As String
Dim typeFichier As String
Dim Titre As String
Dim NomFichierImport As Variant 'String = non
Dim réponse As String

'DoEvents

'Application.ScreenUpdating = False
NomFichierComptes = ActiveWorkbook.Name 'prévient les modifs
typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

'If Dir("C:\Documents and Settings\JP\Bureau", vbDirectory) <> ""
Then
ChDir "C:\Documents and Settings\JP\Bureau"
'Else
'ChDir "C:\Documents and Settings"
'End If

If Err <> 0 Then
Err = 0
MsgBox "Le répertoire n'existe pas !"
Exit Sub
End If

NomFichierImport = Application.GetOpenFilename(typeFichier, ,
Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer" '17/10

If NomFichierImport = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
NomFichierImport = Dir(NomFichierImport)
réponse = MsgBox("Vous avez sélectionné le fichier : " &
NomFichierImport & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo +
vbQuestion, "validation")
If réponse = vbNo Then Exit Sub
End If

'If Right(NomFichierImport, 3) = "xls" Then
'Workbooks.Open NomFichierImport
'Else
Workbooks.OpenText NomFichierImport, Tab:=True,
semicolon:=True, local:=True
'End If
Stop
'--
Workbooks(NomFichierImport).Activate
' Windows(NomFichierImport).Activate
'--
titi = ActiveSheet.Name
MsgBox titi

'' Le pb est ici :
'' "titi" indique que le classeur actif est celui récupéré par
NomFichierImport, soit :
'' Application.GetOpenFilename(typeFichier, , Titre)
'' Mais dans ce qui suit, Cells.Copy, copie les données de l'autre
classeur, soit :
'' NomFichierComptes = ActiveWorkbook.Name
'' Quel est le classeur actif ??

With ActiveSheet
Cells.Copy
'Range("A1:E100").Copy
End With

Workbooks(NomFichierComptes).Activate
Windows(NomFichierComptes).Activate

' Application.EnableEvents = False

Sheets("import").Select

With ActiveSheet
.[a1].Select
.Paste
End With

'Application.CutCopyMode = False

Windows(NomFichierImport).Activate
ActiveWorkbook.Close

'--- MEF_Import ---

With ActiveSheet
Rows("1:3").Delete
Rows("3:3").Delete
'Cells.Select
Cells.EntireColumn.AutoFit
Columns("D:D").Delete
Columns("C:C").NumberFormat = "0.00"

Range("C4").ClearContents

Columns("C:C").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, Formula1:="0"

With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 5
End With

[a1].Select
End With
'--------
Application.ScreenUpdating = True

End Sub
'------------------------------------------

Merci d'avance pour votre aide,

JP

4 réponses

Avatar
Daniel.C
Bonjour.
"Cells", non qualifié fait référence à la feuille qui contient le
bouton. Qualifie "Cells" avec le nom de la feuille.
Cordialement.
Daniel

Bonsoir,

Je deviens fou avec ce pb (que j'avais déjà soumis ici par la passé) !

Voici le code. Le pb est décrit après "Stop"
L'idée, c'est que j'ouvre un premier classeur. Je lance une macro à partir
d'un bouton qui exécute le code dans une feuille ...
A un moment donné, j'ouvre un classeur en ".csv" qui se trouve sur le bureau
et je veux copier son contenu dans une feuille du premier classeur ouvert ...
Et là, problème : où est le classeur actif (un test m'induit apparemment en
erreur).

'------
Sub Import_CSV_click()
Dim NomFichierComptes As String
Dim typeFichier As String
Dim Titre As String
Dim NomFichierImport As Variant 'String = non
Dim réponse As String

'DoEvents

'Application.ScreenUpdating = False
NomFichierComptes = ActiveWorkbook.Name 'prévient les modifs
typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

'If Dir("C:Documents and SettingsJPBureau", vbDirectory) <> "" Then
ChDir "C:Documents and SettingsJPBureau"
'Else
'ChDir "C:Documents and Settings"
'End If

If Err <> 0 Then
Err = 0
MsgBox "Le répertoire n'existe pas !"
Exit Sub
End If

NomFichierImport = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer" '17/10

If NomFichierImport = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
NomFichierImport = Dir(NomFichierImport)
réponse = MsgBox("Vous avez sélectionné le fichier : " &
NomFichierImport & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo + vbQuestion,
"validation")
If réponse = vbNo Then Exit Sub
End If

'If Right(NomFichierImport, 3) = "xls" Then
'Workbooks.Open NomFichierImport
'Else
Workbooks.OpenText NomFichierImport, Tab:=True, semicolon:=True,
local:=True
'End If
Stop
'--
Workbooks(NomFichierImport).Activate
' Windows(NomFichierImport).Activate
'--
titi = ActiveSheet.Name
MsgBox titi

'' Le pb est ici :
'' "titi" indique que le classeur actif est celui récupéré par
NomFichierImport, soit :
'' Application.GetOpenFilename(typeFichier, , Titre)
'' Mais dans ce qui suit, Cells.Copy, copie les données de l'autre
classeur, soit :
'' NomFichierComptes = ActiveWorkbook.Name
'' Quel est le classeur actif ??

With ActiveSheet
Cells.Copy
'Range("A1:E100").Copy
End With

Workbooks(NomFichierComptes).Activate
Windows(NomFichierComptes).Activate

' Application.EnableEvents = False

Sheets("import").Select

With ActiveSheet
.[a1].Select
.Paste
End With

'Application.CutCopyMode = False

Windows(NomFichierImport).Activate
ActiveWorkbook.Close

'--- MEF_Import ---

With ActiveSheet
Rows("1:3").Delete
Rows("3:3").Delete
'Cells.Select
Cells.EntireColumn.AutoFit
Columns("D:D").Delete
Columns("C:C").NumberFormat = "0.00"

Range("C4").ClearContents

Columns("C:C").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, Formula1:="0"

With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 5
End With

[a1].Select
End With
'--------
Application.ScreenUpdating = True

End Sub
'------------------------------------------

Merci d'avance pour votre aide,

JP
Avatar
JPascal
Bonsoir Daniel,

Merci pour ta réponse.
Le problème est que le classeur (csv) dont je veux importer le contenu
possède qu'une seule feuille qui est automatiquement renommée avec le
nom du classeur lui même. Ce classeur étant généré par un site, je n'en
connais pas le nom à l'avance et il m'est donc impossible de l'inscrire
dans mon code.

Qu'entends-tu par "qualifier" ? Faut-il mettre qqch du genre
Feuil1.cells ?

J'avais essayé avec qqch comme Range("A1:Z100").select, mais ça ne
fonctionnait pas mieux !

JP

PS : Vas-tu rejoindre le "nouveau" forum après la fermeture de celui-ci
? J'ai laborieusement réussi à m'y connecter aujourd'hui, mais je n'y
ai pas trouvé (tous) les contributeurs que je connais bien ici !
Daniel.C a formulé ce lundi :
Bonjour.
"Cells", non qualifié fait référence à la feuille qui contient le bouton.
Qualifie "Cells" avec le nom de la feuille.
Cordialement.
Daniel

Bonsoir,

Je deviens fou avec ce pb (que j'avais déjà soumis ici par la passé) !

Voici le code. Le pb est décrit après "Stop"
L'idée, c'est que j'ouvre un premier classeur. Je lance une macro à partir
d'un bouton qui exécute le code dans une feuille ...
A un moment donné, j'ouvre un classeur en ".csv" qui se trouve sur le
bureau et je veux copier son contenu dans une feuille du premier classeur
ouvert ... Et là, problème : où est le classeur actif (un test m'induit
apparemment en erreur).

'------
Sub Import_CSV_click()
Dim NomFichierComptes As String
Dim typeFichier As String
Dim Titre As String
Dim NomFichierImport As Variant 'String = non
Dim réponse As String

'DoEvents

'Application.ScreenUpdating = False
NomFichierComptes = ActiveWorkbook.Name 'prévient les modifs
typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

'If Dir("C:Documents and SettingsJPBureau", vbDirectory) <> "" Then
ChDir "C:Documents and SettingsJPBureau"
'Else
'ChDir "C:Documents and Settings"
'End If

If Err <> 0 Then
Err = 0
MsgBox "Le répertoire n'existe pas !"
Exit Sub
End If

NomFichierImport = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer" '17/10

If NomFichierImport = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
NomFichierImport = Dir(NomFichierImport)
réponse = MsgBox("Vous avez sélectionné le fichier : " &
NomFichierImport & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo + vbQuestion,
"validation")
If réponse = vbNo Then Exit Sub
End If

'If Right(NomFichierImport, 3) = "xls" Then
'Workbooks.Open NomFichierImport
'Else
Workbooks.OpenText NomFichierImport, Tab:=True, semicolon:=True,
local:=True
'End If
Stop
'--
Workbooks(NomFichierImport).Activate
' Windows(NomFichierImport).Activate
'--
titi = ActiveSheet.Name
MsgBox titi

'' Le pb est ici :
'' "titi" indique que le classeur actif est celui récupéré par
NomFichierImport, soit :
'' Application.GetOpenFilename(typeFichier, , Titre)
'' Mais dans ce qui suit, Cells.Copy, copie les données de l'autre
classeur, soit :
'' NomFichierComptes = ActiveWorkbook.Name
'' Quel est le classeur actif ??

With ActiveSheet
Cells.Copy
'Range("A1:E100").Copy
End With

Workbooks(NomFichierComptes).Activate
Windows(NomFichierComptes).Activate

' Application.EnableEvents = False

Sheets("import").Select

With ActiveSheet
.[a1].Select
.Paste
End With

'Application.CutCopyMode = False

Windows(NomFichierImport).Activate
ActiveWorkbook.Close

'--- MEF_Import ---

With ActiveSheet
Rows("1:3").Delete
Rows("3:3").Delete
'Cells.Select
Cells.EntireColumn.AutoFit
Columns("D:D").Delete
Columns("C:C").NumberFormat = "0.00"

Range("C4").ClearContents

Columns("C:C").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, Formula1:="0"

With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 5
End With

[a1].Select
End With
'--------
Application.ScreenUpdating = True

End Sub
'------------------------------------------

Merci d'avance pour votre aide,

JP
Avatar
isabelle
bonjour JP,

il manque un point devant Cells

With ActiveSheet
.Cells.Copy
End With

isabelle

Le 2010-05-24 14:25, JPascal a écrit :
Bonsoir Daniel,

Merci pour ta réponse.
Le problème est que le classeur (csv) dont je veux importer le contenu
possède qu'une seule feuille qui est automatiquement renommée avec le
nom du classeur lui même. Ce classeur étant généré par un site, je
n'en connais pas le nom à l'avance et il m'est donc impossible de
l'inscrire dans mon code.

Qu'entends-tu par "qualifier" ? Faut-il mettre qqch du genre
Feuil1.cells ?

J'avais essayé avec qqch comme Range("A1:Z100").select, mais ça ne
fonctionnait pas mieux !

JP

PS : Vas-tu rejoindre le "nouveau" forum après la fermeture de
celui-ci ? J'ai laborieusement réussi à m'y connecter aujourd'hui,
mais je n'y ai pas trouvé (tous) les contributeurs que je connais bien
ici !
Daniel.C a formulé ce lundi :
Bonjour.
"Cells", non qualifié fait référence à la feuille qui contient le
bouton. Qualifie "Cells" avec le nom de la feuille.
Cordialement.
Daniel

Bonsoir,

Je deviens fou avec ce pb (que j'avais déjà soumis ici par la passé) !

Voici le code. Le pb est décrit après "Stop"
L'idée, c'est que j'ouvre un premier classeur. Je lance une macro à
partir d'un bouton qui exécute le code dans une feuille ...
A un moment donné, j'ouvre un classeur en ".csv" qui se trouve sur
le bureau et je veux copier son contenu dans une feuille du premier
classeur ouvert ... Et là, problème : où est le classeur actif (un
test m'induit apparemment en erreur).

'------
Sub Import_CSV_click()
Dim NomFichierComptes As String
Dim typeFichier As String
Dim Titre As String
Dim NomFichierImport As Variant 'String = non
Dim réponse As String

'DoEvents

'Application.ScreenUpdating = False
NomFichierComptes = ActiveWorkbook.Name 'prévient les modifs
typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

'If Dir("C:Documents and SettingsJPBureau", vbDirectory) <>
"" Then
ChDir "C:Documents and SettingsJPBureau"
'Else
'ChDir "C:Documents and Settings"
'End If

If Err <> 0 Then
Err = 0
MsgBox "Le répertoire n'existe pas !"
Exit Sub
End If

NomFichierImport = Application.GetOpenFilename(typeFichier, ,
Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer" '17/10

If NomFichierImport = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
NomFichierImport = Dir(NomFichierImport)
réponse = MsgBox("Vous avez sélectionné le fichier : " &
NomFichierImport & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo + vbQuestion,
"validation")
If réponse = vbNo Then Exit Sub
End If

'If Right(NomFichierImport, 3) = "xls" Then
'Workbooks.Open NomFichierImport
'Else
Workbooks.OpenText NomFichierImport, Tab:=True,
semicolon:=True, local:=True
'End If
Stop
'--
Workbooks(NomFichierImport).Activate
' Windows(NomFichierImport).Activate
'--
titi = ActiveSheet.Name
MsgBox titi

'' Le pb est ici :
'' "titi" indique que le classeur actif est celui récupéré par
NomFichierImport, soit :
'' Application.GetOpenFilename(typeFichier, , Titre)
'' Mais dans ce qui suit, Cells.Copy, copie les données de
l'autre classeur, soit :
'' NomFichierComptes = ActiveWorkbook.Name
'' Quel est le classeur actif ??

With ActiveSheet
Cells.Copy
'Range("A1:E100").Copy
End With

Workbooks(NomFichierComptes).Activate
Windows(NomFichierComptes).Activate

' Application.EnableEvents = False

Sheets("import").Select

With ActiveSheet
.[a1].Select
.Paste
End With

'Application.CutCopyMode = False

Windows(NomFichierImport).Activate
ActiveWorkbook.Close

'--- MEF_Import ---

With ActiveSheet
Rows("1:3").Delete
Rows("3:3").Delete
'Cells.Select
Cells.EntireColumn.AutoFit
Columns("D:D").Delete
Columns("C:C").NumberFormat = "0.00"

Range("C4").ClearContents

Columns("C:C").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, Formula1:="0"

With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 5
End With

[a1].Select
End With
'--------
Application.ScreenUpdating = True

End Sub
'------------------------------------------

Merci d'avance pour votre aide,

JP






Avatar
JPascal
Merci Isabelle !
Un malheureux point ! Je n'y crois pas ! J'ai vraiment la vue qui
baisse ;-(


isabelle a exprimé avec précision :
bonjour JP,

il manque un point devant Cells

With ActiveSheet
.Cells.Copy
End With

isabelle

Le 2010-05-24 14:25, JPascal a écrit :
Bonsoir Daniel,

Merci pour ta réponse.
Le problème est que le classeur (csv) dont je veux importer le contenu
possède qu'une seule feuille qui est automatiquement renommée avec le nom
du classeur lui même. Ce classeur étant généré par un site, je n'en connais
pas le nom à l'avance et il m'est donc impossible de l'inscrire dans mon
code.

Qu'entends-tu par "qualifier" ? Faut-il mettre qqch du genre Feuil1.cells ?

J'avais essayé avec qqch comme Range("A1:Z100").select, mais ça ne
fonctionnait pas mieux !

JP

PS : Vas-tu rejoindre le "nouveau" forum après la fermeture de celui-ci ?
J'ai laborieusement réussi à m'y connecter aujourd'hui, mais je n'y ai pas
trouvé (tous) les contributeurs que je connais bien ici !
Daniel.C a formulé ce lundi :
Bonjour.
"Cells", non qualifié fait référence à la feuille qui contient le bouton.
Qualifie "Cells" avec le nom de la feuille.
Cordialement.
Daniel

Bonsoir,

Je deviens fou avec ce pb (que j'avais déjà soumis ici par la passé) !

Voici le code. Le pb est décrit après "Stop"
L'idée, c'est que j'ouvre un premier classeur. Je lance une macro à
partir d'un bouton qui exécute le code dans une feuille ...
A un moment donné, j'ouvre un classeur en ".csv" qui se trouve sur le
bureau et je veux copier son contenu dans une feuille du premier classeur
ouvert ... Et là, problème : où est le classeur actif (un test m'induit
apparemment en erreur).

'------
Sub Import_CSV_click()
Dim NomFichierComptes As String
Dim typeFichier As String
Dim Titre As String
Dim NomFichierImport As Variant 'String = non
Dim réponse As String

'DoEvents

'Application.ScreenUpdating = False
NomFichierComptes = ActiveWorkbook.Name 'prévient les modifs
typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

'If Dir("C:Documents and SettingsJPBureau", vbDirectory) <> ""
Then
ChDir "C:Documents and SettingsJPBureau"
'Else
'ChDir "C:Documents and Settings"
'End If

If Err <> 0 Then
Err = 0
MsgBox "Le répertoire n'existe pas !"
Exit Sub
End If

NomFichierImport = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer" '17/10

If NomFichierImport = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
NomFichierImport = Dir(NomFichierImport)
réponse = MsgBox("Vous avez sélectionné le fichier : " &
NomFichierImport & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo + vbQuestion,
"validation")
If réponse = vbNo Then Exit Sub
End If

'If Right(NomFichierImport, 3) = "xls" Then
'Workbooks.Open NomFichierImport
'Else
Workbooks.OpenText NomFichierImport, Tab:=True, semicolon:=True,
local:=True
'End If
Stop
'--
Workbooks(NomFichierImport).Activate
' Windows(NomFichierImport).Activate
'--
titi = ActiveSheet.Name
MsgBox titi

'' Le pb est ici :
'' "titi" indique que le classeur actif est celui récupéré par
NomFichierImport, soit :
'' Application.GetOpenFilename(typeFichier, , Titre)
'' Mais dans ce qui suit, Cells.Copy, copie les données de l'autre
classeur, soit :
'' NomFichierComptes = ActiveWorkbook.Name
'' Quel est le classeur actif ??

With ActiveSheet
Cells.Copy
'Range("A1:E100").Copy
End With

Workbooks(NomFichierComptes).Activate
Windows(NomFichierComptes).Activate

' Application.EnableEvents = False

Sheets("import").Select

With ActiveSheet
.[a1].Select
.Paste
End With

'Application.CutCopyMode = False

Windows(NomFichierImport).Activate
ActiveWorkbook.Close

'--- MEF_Import ---

With ActiveSheet
Rows("1:3").Delete
Rows("3:3").Delete
'Cells.Select
Cells.EntireColumn.AutoFit
Columns("D:D").Delete
Columns("C:C").NumberFormat = "0.00"

Range("C4").ClearContents

Columns("C:C").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlGreater, Formula1:="0"

With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.ColorIndex = 5
End With

[a1].Select
End With
'--------
Application.ScreenUpdating = True

End Sub
'------------------------------------------

Merci d'avance pour votre aide,

JP