Bonjour
On m'a fourni un fichier excel qui est en fait un questionnaire d'évaluation. Ce fichier contient pas mal d'onglet et pour chaque partie du questionnaire il y a un onglet résultats. Il contient également une macro servant à mettre à jour ces résultats en fonction des réponses apportées.
Le hic c'est que ce fichier est en anglais. J'ai du enlever la macro pour faire traduire en français.
Voici un aperçu des onglets en anglais et en français:
EN=
FR =
J'ai copié-collé la macro de la version anglaise dans la version française et j'ai modifié comme suit :
Worksheets(SheetName & " Results").Rows("12:1000").Delete Shift:=xlUp en anglais qui devient
Worksheets(SheetName & " Résultats").Rows("12:1000").Delete Shift:=xlUp en français
J'ai changé "Results" pour "Résultats" partout où cela apparaissait dans la macro.
Le message d'erreur s'affiche précisément sur la ligne ci-dessus et je ne comprends pas pourquoi. N'y connaissant pas grand chose dans le language VBA, je sollicite votre aide !!
Merciiii !!
Cécile
PS: je suis en Nouvelle-Calédonie et il y a en ce moment 10h en + de décalage avec la France donc ne vous inquiétez pas si je ne réponds pas immédiatement !
Ci-dessous la totalité de la macro en anglais :
Option Explicit
Sub CreateList(SheetName As String)
Dim x As Long
Dim xlcnn As ADODB.Connection
Set xlcnn = New ADODB.Connection
xlcnn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";Extended Properties=""Excel 8.0;HDR=Yes""")
Dim xlcmd As ADODB.Command
Set xlcmd = New ADODB.Command
xlcmd.ActiveConnection = xlcnn
Dim xlrs As ADODB.Recordset
Set xlrs = New ADODB.Recordset
Worksheets(SheetName & " Results").Rows("12:1000").Delete Shift:=xlUp
xlcmd.CommandText = "SELECT F1, Null AS aaa, F9 FROM [" & SheetName & "$B10:J1000] WHERE F8 IN(1,2)"
xlrs.Open xlcmd, , adOpenDynamic
Worksheets(SheetName & " Results").Range("B12").CopyFromRecordset xlrs
Worksheets(SheetName & " Results").Select
For x = 12 To Worksheets(SheetName & " Results").Range("B65536").End(xlUp).Row
Worksheets(SheetName & " Results").Range("B" & x & "" & x).WrapText = True
Worksheets(SheetName & " Results").Range("B" & x & ":C" & x).Merge
Worksheets(SheetName & " Results").Rows(x & ":" & x).VerticalAlignment = xlTop
Worksheets(SheetName & " Results").Range("B" & x & ":C" & x).Select
Call HeightIssue
Next x
With Worksheets(SheetName & " Results").Range("B10" & Worksheets(SheetName & " Results").Range("B65536").End(xlUp).Row)
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeTop).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlThin
End With
xlrs.Close
Set xlrs = Nothing
Set xlcmd = Nothing
Set xlcnn = Nothing
End Sub
Sub LoopThroughSheets()
Application.ScreenUpdating = False
Dim xlsh As Excel.Worksheet
For Each xlsh In ActiveWorkbook.Worksheets
If Len(xlsh.Name) <= 6 And xlsh.Name <> "PDCA" And xlsh.Name <> "Sheet1" Then Call CreateList(xlsh.Name)
Next xlsh
Worksheets("Instructions").Select
Application.ScreenUpdating = True
MsgBox "Results Tabs Updated", vbOKOnly, "Results Tabs Updated"
End Sub
On m'a fourni un fichier excel qui est en fait un questionnaire d'évaluation. Ce fichier contient pas mal d'onglet et pour chaque partie du questionnaire il y a un onglet résultats. Il contient également une macro servant à mettre à jour ces résultats en fonction des réponses apportées.
Le hic c'est que ce fichier est en anglais. J'ai du enlever la macro pour faire traduire en français.
Voici un aperçu des onglets en anglais et en français:
EN=
FR =
J'ai copié-collé la macro de la version anglaise dans la version française et j'ai modifié comme suit :
Worksheets(SheetName & " Results").Rows("12:1000").Delete Shift:=xlUp en anglais qui devient
Worksheets(SheetName & " Résultats").Rows("12:1000").Delete Shift:=xlUp en français
J'ai changé "Results" pour "Résultats" partout où cela apparaissait dans la macro.
Le message d'erreur s'affiche précisément sur la ligne ci-dessus et je ne comprends pas pourquoi. N'y connaissant pas grand chose dans le language VBA, je sollicite votre aide !!
Merciiii !!
Cécile
PS: je suis en Nouvelle-Calédonie et il y a en ce moment 10h en + de décalage avec la France donc ne vous inquiétez pas si je ne réponds pas immédiatement !
Ci-dessous la totalité de la macro en anglais :
Option Explicit
Sub CreateList(SheetName As String)
Dim x As Long
Dim xlcnn As ADODB.Connection
Set xlcnn = New ADODB.Connection
xlcnn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";Extended Properties=""Excel 8.0;HDR=Yes""")
Dim xlcmd As ADODB.Command
Set xlcmd = New ADODB.Command
xlcmd.ActiveConnection = xlcnn
Dim xlrs As ADODB.Recordset
Set xlrs = New ADODB.Recordset
Worksheets(SheetName & " Results").Rows("12:1000").Delete Shift:=xlUp
xlcmd.CommandText = "SELECT F1, Null AS aaa, F9 FROM [" & SheetName & "$B10:J1000] WHERE F8 IN(1,2)"
xlrs.Open xlcmd, , adOpenDynamic
Worksheets(SheetName & " Results").Range("B12").CopyFromRecordset xlrs
Worksheets(SheetName & " Results").Select
For x = 12 To Worksheets(SheetName & " Results").Range("B65536").End(xlUp).Row
Worksheets(SheetName & " Results").Range("B" & x & "" & x).WrapText = True
Worksheets(SheetName & " Results").Range("B" & x & ":C" & x).Merge
Worksheets(SheetName & " Results").Rows(x & ":" & x).VerticalAlignment = xlTop
Worksheets(SheetName & " Results").Range("B" & x & ":C" & x).Select
Call HeightIssue
Next x
With Worksheets(SheetName & " Results").Range("B10" & Worksheets(SheetName & " Results").Range("B65536").End(xlUp).Row)
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeTop).Weight = xlMedium
.Borders(xlEdgeBottom).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlThin
End With
xlrs.Close
Set xlrs = Nothing
Set xlcmd = Nothing
Set xlcnn = Nothing
End Sub
Sub LoopThroughSheets()
Application.ScreenUpdating = False
Dim xlsh As Excel.Worksheet
For Each xlsh In ActiveWorkbook.Worksheets
If Len(xlsh.Name) <= 6 And xlsh.Name <> "PDCA" And xlsh.Name <> "Sheet1" Then Call CreateList(xlsh.Name)
Next xlsh
Worksheets("Instructions").Select
Application.ScreenUpdating = True
MsgBox "Results Tabs Updated", vbOKOnly, "Results Tabs Updated"
End Sub