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

ecriture dans un fichier excel 2010

8 réponses
Avatar
talllix
Bonjour =E0 tous

Me revoil=E0 avec une nouvelle question(ma dernier date de mercredi 27 mars=
2013)(http://groupes.codes-sources.com/articlefull.aspx?id=3D509786) et Mi=
chD m'a aid=E9 tr=E8s fort pour r=E9soudre mon probl=E8me. Un grand merci =
=E0 MichD!!!!

Je me re-pr=E9sente:

A Lyon je suis cadre de sant=E9 d'imagerie m=E9dicale mais je fais de la fo=
rmation bureautique et logiciels m=E9tiers aux agents du chu.
Je d=E9veloppe aussi des applications de gestion en vba.

Pour que vous compreniez l'objet de ma demande il faut que je vous explique=
, en gros, comment fonctionnent mes appli.

Toutes mes appli. se trouvent sur le r=E9seau du chu et fonctionnent selon =
le principe suivant:

Les utilisateurs clic sur un raccourci qui se trouve sur le bureau. Ce racc=
ourci pointe vers un fichier vbs qui ouvre une copie d'un fichier XLT.

Le fichier utilisent comme base de donn=E9es des classeurs ferm=E9s pour li=
re et =E9crire ce qui y est saisie..

A la fermeture cette copie s'auto d=E9truit pour qu'on ne puisse pas en gar=
der une copie. Elle s'auto d=E9truit pour que les utilisateurs travaillent=
toujours sur la derni=E8re version car je fais =E9voluer r=E9guli=E8rement=
mes applis.
Travailler avec des copies me permet d'avoir des applications multi-utilisa=
teurs(apparemment!!!).

Je m'explique:

A l'ouverture l'appli lit des classeurs ferm=E9s pour importer les donn=E9e=
s de param=E9trage, les donn=E9es de droits d'acc=E9s et les donn=E9es sais=
ies par les usagers.
Les saisis des agents sont envoy=E9s dans le classeur ferm=E9 des donn=E9es=
saisies par les usagers.
Lors de la lecture et l'=E9criture mon code Vba v=E9rifie que le fichier fe=
rm=E9 de destination n'est pas entrain d'=EAtre lu ou =E9crit si c'est le c=
as un timer de 2 secondes se d=E9clenche, au bout de ces 2 secondes une nou=
velle tentative est faite et ceci 5 fois.
Au bout de 5 fois en cas d'=E9chec un message demande =E0 l'usager de r=E9e=
ssayer.
En fait =E7a arrive tr=E8s rarement(1 fois sur plus de 1000 essais malgr=E9=
plus de 180.000 connexions annuelles)

Pour lire et =E9crire dans un classeur ferm=E9 j'utilise les ADO.
Jusqu'=E0 maintenant j'utilisai excel 2002-2003!!!!=20
2010 est arriv=E9!!!

Pr=E9sentation de ma probl=E9matique:
pour lire et =E9crire dans un classeur ferm=E9 excel version 2010 il n'y a =
pas de souci mais excel n'importe ou n'exporte que 255 colonnes.
Comment arriver =E0 =E9crire dans les colonnes sup=E9rieures =E0 255.
En fait pour les planning de travail des agents dans excel 2002-2003 il est=
impossible de faire tenir 365 jours dans une seule feuille, alors que c'es=
t possible dans 2010. Mais je ne peux pas lire ou =E9crire plus de 255 colo=
nnes.

Voici ci dessous mes deux routines.


merci par avance pour votre aide

CODE POUR ECRIRE
Sub ExporteLesDonnees()

3 Feuille =3D ActiveSheet.Name=20
4 PlageSource =3D Range(Cells(LigSourcAgt, ColAgt), Cells(LigSourcAgt + 2, =
ColAgt)).Address(0, 0) =20
5 PlageDest =3D Range(Cells(LigCibleAgt, ColAgt), Cells(LigCibleAgt + 2, Co=
lAgt)).Address(0, 0)

6 Set MaConnexion =3D New ADODB.Connection
7 MaConnexion.Open "Provider=3DMicrosoft.ACE.OLEDB.12.0;Data Source=3D=
" & Chemin & ";Extended Properties=3D""Excel 12.0;HDR=3DNO;"";"
8 Set MaCommande=3D New ADODB.Command
9 MaCommande.ActiveConnection =3D MaConnexion
10 For Each CellSource In ActiveWorkbook.Sheets(Feuille).Range(PlageSource)
11 MaDonnee=3D CellSource.Value
12 DestCellAdr =3D Cells(LigCibleAgt + ConfirmeExport, ColAgt).Address(0=
, 0)
13 ConfirmeExport =3D ConfirmeExport + 1

14 RangeDest =3D DestCellAdr & ":" & DestCellAdr
15 MaCommande.CommandText =3D "SELECT * from `" & Feuille &=
"$" & RangeDest & "`"
16 Set MonEnregistrement=3D New ADODB.Recordset
17 MonEnregistrement.Open MaCommande, , adOpenKeyset, adLockOptimistic
18 If MaDonnee=3D "" Then MaDonnee=3D " "
19 MonEnregistrement (0).Value =3D MaDonnee
20 MonEnregistrement.Update
DoEvents
21 Next CellSource
22 MaConnexion.Close
23 Set MaConnexion =3D Nothing
24 Set MaCommande=3D Nothing
25 Set MonEnregistrement=3D Nothing
26 Exit Sub

End Sub


CODE POUR LIRE
20 Cellule =3D "A1:GI200" 'Ref de la cellule contenant la donn=E9e =E0 r=
=E9cup=E9rer
=20
21 Set MaConnexion =3D New ADODB.Connection
22 MaConnexion .Open "Provider=3DMicrosoft.ACE.OLEDB.12.0;Data Sou=
rce=3D" & Chemin & ";Extended Properties=3D""Excel 12.0;HDR=3DNO;IMEX=3D1;"=
";"
=20
23 Set MaCommande=3D New ADODB.Command
24 MaCommande.ActiveConnection =3D MaConnexion
25 MaCommande.CommandText =3D "SELECT * FROM [" & "AlerteS=
em1" & "$" & Cellule & "]"
26 Set MonEnregistrement=3D New ADODB.Recordset
27 MonEnregistrement.Open MaCommande, , adOpenKeyset, adLo=
ckOptimistic

28 Alertes1.Range("A1").CopyFromRecordset MonEnregistremen=
t
29 MonEnregistrement.Close '****************************=
***************************************************
30 Set MaCommande=3D New ADODB.Command
31 MaCommande.ActiveConnection =3D Source
32 MaCommande.CommandText =3D "SELECT * FROM [" & "AlerteS=
em2" & "$" & Cellule & "]"
33 Set MonEnregistrement=3D New ADODB.Recordset
34 MonEnregistrement.Open MaCommande, , adOpenKeyset, adLo=
ckOptimistic

35 Alertes2.Range("A1").CopyFromRecordset MonEnregistremen=
t
36 MonEnregistrement.Close
'****************************************************************=
***************
37 MaConnexion.Close
38 Set MaConnexion =3D Nothing
39 Set MonEnregistrement=3D Nothing
40 Set MaCommande=3D Nothing

8 réponses

Avatar
MichD
Bonjour,

Pour accéder aux colonnes au-delà de la colonne 255, une façon de faire est
d'utiliser dans le fichier source d'où on veut extraire les données des
plages nommées
définies au niveau du classeur.

À titre d'exemple, on peut utiliser la fonction "Decaler()" dans fait
référence à :
Plage "Toto" ÞCALER($A$1;;;NBVAL($A:$A);255) pour les colonnes 1 à 255
Plage "Titi" ÞCALER($IV$1;;;NBVAL($A:$A);25)) pour les 25 autres
colonnes au-delà de la colonne 255.

Et dans ADO, il s'agit de faire une boucle sur les 2 plages nommées
Avatar
MichD
Si tu veux un exemple de macro :

Requiert la référence "Microsoft Activex Data Objects 2.8 Library"

Extrais les données du fichier source vers la "feuil2" du classeur où est
écrite la macro.
Le fichier source à 2 plages nommées : Table1 et Table2
'-----------------------------------------------------------
Sub test()
'Requiert la référence :
'Microsoft Activex Data Objects 2.8 Library"

Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Nb As Long, Requete As String
Dim Temp As Long, X As Long, K As Long
Dim SourceFile As String, Elt As Variant

'Chemin & nom du fichier
SourceFile = "c:UsersLe profilDocumentstoto.xlsm"

'Ouverture de la connection
Cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & SourceFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes"";"

'Boucle sur les 2 plages nommées du fichier source
For Each Elt In Array("table1", "table2")
'Texte de la requête
Requete = "SELECT * FROM " & Elt

'ouvrir le recordset
Rst.Open Requete, Cnn, 1, 1, 1

'Obtenir le nombre d'enregistrements du recordset
Nb = Rst.RecordCount
If Nb > 0 Then
T = Rst.GetRows()
X = UBound(T, 1) + 1
If X < 255 Then
K = X
Else
K = 255
End If
'Copie du recordset dans la feuille Feuil2
Worksheets("Feuil2").Range("A1").Offset(, Temp).Resize(19, K) = _
Application.Transpose(T)
Temp = Temp + UBound(T, 1) + 1
End If
Rst.Close
Next

End Sub
'-----------------------------------------------------------
Avatar
Jacquouille
Bonsoir Denis,
Si je lis bien, il semble que des utilisateurs aient encore 2003.
En fait pour les planning de travail des agents dans excel 2002-2003 il
est impossible de faire tenir 365 jours dans une seule feuille, alors
que c'est possible dans 2010. Mais je ne peux pas lire ou écrire plus de
255 colonnes.






- Ce procédé de 2 plages va-t-il fonctionner? Où va-t-on caser les colonnes
256 ?



Bonne soirée et merci pour tes explications.
Jacques.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m3b0am$1qs$


Si tu veux un exemple de macro :

Requiert la référence "Microsoft Activex Data Objects 2.8 Library"

Extrais les données du fichier source vers la "feuil2" du classeur où est
écrite la macro.
Le fichier source à 2 plages nommées : Table1 et Table2
'-----------------------------------------------------------
Sub test()
'Requiert la référence :
'Microsoft Activex Data Objects 2.8 Library"

Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Nb As Long, Requete As String
Dim Temp As Long, X As Long, K As Long
Dim SourceFile As String, Elt As Variant

'Chemin & nom du fichier
SourceFile = "c:UsersLe profilDocumentstoto.xlsm"

'Ouverture de la connection
Cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & SourceFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes"";"

'Boucle sur les 2 plages nommées du fichier source
For Each Elt In Array("table1", "table2")
'Texte de la requête
Requete = "SELECT * FROM " & Elt

'ouvrir le recordset
Rst.Open Requete, Cnn, 1, 1, 1

'Obtenir le nombre d'enregistrements du recordset
Nb = Rst.RecordCount
If Nb > 0 Then
T = Rst.GetRows()
X = UBound(T, 1) + 1
If X < 255 Then
K = X
Else
K = 255
End If
'Copie du recordset dans la feuille Feuil2
Worksheets("Feuil2").Range("A1").Offset(, Temp).Resize(19, K) = _
Application.Transpose(T)
Temp = Temp + UBound(T, 1) + 1
End If
Rst.Close
Next

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


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Avatar
MichD
Je rectifie. On ne peut pas utiliser "Decaler" pour définir une plage nommée
qui servira de table dans ADO. Désolé pour la méprise.

Comme Jacquouille le fait remarquer, on ne peut pas copier 300 colonnes que
peut contenir un fichier depuis Excel 2007 vers un fichier .xls qui lui est
limité à 255 colonnes. La plage de destination peut être répartie sur 2
feuilles pour les versions antérieures à Excel 2007. Il n'y a pas de
solutions miracles pour cela!
Avatar
MichD
Bonjour Jacquouille,

Je sais. Mais de toute manière, avec ADO, on ne peut pas pour le moment même
avec les versions récentes d'Excel, extraire plus de 255 colonnes à la fois.
C'est une limite d'ADO pour le moment. Ce pour quoi j'ai suggéré une boucle!
Cela n'enlève pas non plus la limite du nombre de colonnes des versions
antérieures à Excel 2007. Là, il n'y a pas moyen de faire appel à des
astuces...
Avatar
Jacquouille
Merci Denis
Bonne soirée
Jacques.



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m3b5r2$hff$

Bonjour Jacquouille,

Je sais. Mais de toute manière, avec ADO, on ne peut pas pour le moment même
avec les versions récentes d'Excel, extraire plus de 255 colonnes à la fois.
C'est une limite d'ADO pour le moment. Ce pour quoi j'ai suggéré une boucle!
Cela n'enlève pas non plus la limite du nombre de colonnes des versions
antérieures à Excel 2007. Là, il n'y a pas moyen de faire appel à des
astuces...


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Avatar
Jacquouille
S'il n'y avait pas de réseau (avec des autres versions), j'aurais suggéré ce
bricolage:
Copier les 250 premières colonnes sur une feuille et les autres sur une
seconde feuille.
L'utilisateur pourrait les ouvrir toutes les 2 ...(flèche Windows + flèche
gauche ou droite) ....
C'est pas le paradis, mais c'est mieux que rien.
La bonne soirée à vous tous

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Jacquouille" a écrit dans le message de groupe de discussion :
m3b5uh$hln$

Merci Denis
Bonne soirée
Jacques.



Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
m3b5r2$hff$

Bonjour Jacquouille,

Je sais. Mais de toute manière, avec ADO, on ne peut pas pour le moment même
avec les versions récentes d'Excel, extraire plus de 255 colonnes à la fois.
C'est une limite d'ADO pour le moment. Ce pour quoi j'ai suggéré une boucle!
Cela n'enlève pas non plus la limite du nombre de colonnes des versions
antérieures à Excel 2007. Là, il n'y a pas moyen de faire appel à des
astuces...


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant
parce que la protection avast! Antivirus est active.
http://www.avast.com


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Avatar
tallix
Le mardi 04 Novembre 2014 à 13:19 par talllix :
Bonjour à tous

Me revoilà avec une nouvelle question(ma dernier date de mercredi 27 mars=
2013)(http://groupes.codes-sources.com/articlefull.aspx?idP9786) et Mi=
chD m'a aidé très fort pour résoudre mon problème. Un grand merci =
à MichD!!!!

Je me re-présente:

A Lyon je suis cadre de santé d'imagerie médicale mais je fais de la fo=
rmation bureautique et logiciels métiers aux agents du chu.
Je développe aussi des applications de gestion en vba.

Pour que vous compreniez l'objet de ma demande il faut que je vous explique=
, en gros, comment fonctionnent mes appli.

Toutes mes appli. se trouvent sur le réseau du chu et fonctionnent selon =
le principe suivant:

Les utilisateurs clic sur un raccourci qui se trouve sur le bureau. Ce racc=
ourci pointe vers un fichier vbs qui ouvre une copie d'un fichier XLT.

Le fichier utilisent comme base de données des classeurs fermés pour li=
re et écrire ce qui y est saisie..

A la fermeture cette copie s'auto détruit pour qu'on ne puisse pas en gar=
der une copie. Elle s'auto détruit pour que les utilisateurs travaillent=
toujours sur la dernière version car je fais évoluer régulièrement=
mes applis.
Travailler avec des copies me permet d'avoir des applications multi-utilisa=
teurs(apparemment!!!).

Je m'explique:

A l'ouverture l'appli lit des classeurs fermés pour importer les donnée=
s de paramétrage, les données de droits d'accés et les données sais=
ies par les usagers.
Les saisis des agents sont envoyés dans le classeur fermé des données=
saisies par les usagers.
Lors de la lecture et l'écriture mon code Vba vérifie que le fichier fe=
rmé de destination n'est pas entrain d'être lu ou écrit si c'est le c=
as un timer de 2 secondes se déclenche, au bout de ces 2 secondes une nou=
velle tentative est faite et ceci 5 fois.
Au bout de 5 fois en cas d'échec un message demande à l'usager de rée=
ssayer.
En fait ça arrive très rarement(1 fois sur plus de 1000 essais malgré=
plus de 180.000 connexions annuelles)

Pour lire et écrire dans un classeur fermé j'utilise les ADO.
Jusqu'à maintenant j'utilisai excel 2002-2003!!!!
2010 est arrivé!!!

Présentation de ma problématique:
pour lire et écrire dans un classeur fermé excel version 2010 il n'y a =
pas de souci mais excel n'importe ou n'exporte que 255 colonnes.
Comment arriver à écrire dans les colonnes supérieures à 255.
En fait pour les planning de travail des agents dans excel 2002-2003 il est=
impossible de faire tenir 365 jours dans une seule feuille, alors que c'es=
t possible dans 2010. Mais je ne peux pas lire ou écrire plus de 255 colo=
nnes.

Voici ci dessous mes deux routines.


merci par avance pour votre aide

CODE POUR ECRIRE
Sub ExporteLesDonnees()

3 Feuille = ActiveSheet.Name
4 PlageSource = Range(Cells(LigSourcAgt, ColAgt), Cells(LigSourcAgt + 2, =
ColAgt)).Address(0, 0)
5 PlageDest = Range(Cells(LigCibleAgt, ColAgt), Cells(LigCibleAgt + 2, Co=
lAgt)).Address(0, 0)

6 Set MaConnexion = New ADODB.Connection
7 MaConnexion.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data
Source==
" & Chemin & ";Extended Properties=""Excel
12.0;HDR=NO;"";"
8 Set MaCommande= New ADODB.Command
9 MaCommande.ActiveConnection = MaConnexion
10 For Each CellSource In ActiveWorkbook.Sheets(Feuille).Range(PlageSource)
11 MaDonnee= CellSource.Value
12 DestCellAdr = Cells(LigCibleAgt + ConfirmeExport, ColAgt).Address(0=
, 0)
13 ConfirmeExport = ConfirmeExport + 1

14 RangeDest = DestCellAdr & ":" &
DestCellAdr
15 MaCommande.CommandText = "SELECT * from `" &
Feuille &=
"$" & RangeDest & "`"
16 Set MonEnregistrement= New ADODB.Recordset
17 MonEnregistrement.Open MaCommande, , adOpenKeyset, adLockOptimistic
18 If MaDonnee= "" Then MaDonnee= " "
19 MonEnregistrement (0).Value = MaDonnee
20 MonEnregistrement.Update
DoEvents
21 Next CellSource
22 MaConnexion.Close
23 Set MaConnexion = Nothing
24 Set MaCommande= Nothing
25 Set MonEnregistrement= Nothing
26 Exit Sub

End Sub


CODE POUR LIRE
20 Cellule = "A1:GI200" 'Ref de la cellule contenant la donnée
à r=
écupérer

21 Set MaConnexion = New ADODB.Connection
22 MaConnexion .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data
Sou=
rce=" & Chemin & ";Extended Properties=""Excel
12.0;HDR=NO;IMEX=1;"=
";"

23 Set MaCommande= New ADODB.Command
24 MaCommande.ActiveConnection = MaConnexion
25 MaCommande.CommandText = "SELECT * FROM ["
& "AlerteS=
em1" & "$" & Cellule & "]"
26 Set MonEnregistrement= New ADODB.Recordset
27 MonEnregistrement.Open MaCommande, , adOpenKeyset, adLo=
ckOptimistic

28 Alertes1.Range("A1").CopyFromRecordset
MonEnregistremen=
t
29 MonEnregistrement.Close '****************************=
***************************************************
30 Set MaCommande= New ADODB.Command
31 MaCommande.ActiveConnection = Source
32 MaCommande.CommandText = "SELECT * FROM ["
& "AlerteS=
em2" & "$" & Cellule & "]"
33 Set MonEnregistrement= New ADODB.Recordset
34 MonEnregistrement.Open MaCommande, , adOpenKeyset, adLo=
ckOptimistic

35 Alertes2.Range("A1").CopyFromRecordset
MonEnregistremen=
t
36 MonEnregistrement.Close
'****************************************************************=
***************
37 MaConnexion.Close
38 Set MaConnexion = Nothing
39 Set MonEnregistrement= Nothing
40 Set MaCommande= Nothing


bonsoir a tous,
je vous réponds un peu tard et je vous prie de m'excuser. prie par mon pojet j'en ai oublié de revenir sur le forum.
excel 2010 est bien limiter en import de données d'un classeur fermé à 255 colonne, j'ai donc fait un boucle et c'est lourd mais ca marche et la voici:
Sub Charge_ACTIVITESouMEDECINS()
Set Source = New ADODB.Connection
Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Chemin & ";Extended Properties=""Excel 12.0;HDR=NO;IMEX=1;"";"
'****************************************
CodeNameFeuil = "ACTIVITES": Charge_ACTIVITESouMEDECINS

1 If Sommaire.Range("A19") = 1 Then Stop '**
Dim MaPlage
2 EventOff
3 On Error GoTo GereError_Charge_ACTIVITESouMEDECINS
4 Deprotege CodeNameFeuil
5 On Error Resume Next
6 Sheets(CodeNameFeuil).Range(Cells(3, 1), Cells(53, 3845)).SpecialCells(xlCellTypeAllValidation).Validation.Delete
7 On Error GoTo GereError_Charge_ACTIVITESouMEDECINS

8 With Sheets(CodeNameFeuil)
9 .Visible = xlSheetVisible
10 If CodeNameFeuil = "ACTIVITES" Then .Select
11 If CodeNameFeuil = "MEDECINS" Then .Select

'Stop
12 Quoi = "A1:IP53": ou = "A1": GoSub ExecuteRequete
13 Quoi = "IQ1:SF53": ou = "IQ1": GoSub ExecuteRequete
14 Quoi = "SG1:ABV53": ou = "SG1": GoSub ExecuteRequete
15 Quoi = "ABW1:ALL53": ou = "ABW1": GoSub ExecuteRequete
16 Quoi = "ALM1:AVB53": ou = "ALM1": GoSub ExecuteRequete
17 Quoi = "AVC1:BER53": ou = "AVC1": GoSub ExecuteRequete
18 Quoi = "BES1:BON53": ou = "BES1": GoSub ExecuteRequete
19 Quoi = "BOI1:BXX53": ou = "BOI1": GoSub ExecuteRequete
20 Quoi = "BXY1:CHN53": ou = "BXY1": GoSub ExecuteRequete
21 Quoi = "CHO1:CRD53": ou = "CHO1": GoSub ExecuteRequete
22 Quoi = "CRE:DAT53": ou = "CRE1": GoSub ExecuteRequete
23 Quoi = "DAU1:DKJ53": ou = "DAU1": GoSub ExecuteRequete
24 Quoi = "DKK1:DTZ53": ou = "DKK1": GoSub ExecuteRequete
25 Quoi = "DUA1:EDP53": ou = "DUA1": GoSub ExecuteRequete
26 Quoi = "EDQ1:ENF53": ou = "EDQ1": GoSub ExecuteRequete
27 Quoi = "ENG1:EQW53": ou = "ENG1": GoSub ExecuteRequete
'21 Stop
28 Application.Calculation = xlCalculationAutomatic
29 If CodeNameFeuil = "ACTIVITES" Or CodeNameFeuil = "MEDECINS" Then
30 .Range("A1").Value = ACTIVITES.Range("A1").Value
31 .Range("C1").FormulaR1C1 = "ÚTE(R1C1-1,12,1)"
32 .Range("F1:EQW1").FormulaR1C1 = "=RC[-3]+1"
33 .Range("C2:E2").NumberFormat = "d"
34 .Range("C2").FormulaR1C1 = "=R1C"
35 .Range("D2").FormulaR1C1 = "=R1C[-1]"
36 .Range("E2").FormulaR1C1 = "=R1C[-2]"

37 .Range("C2:E2").AutoFill Destination:=Range("C2:EQW2"), Type:=xlFillDefault
38 .Range(Cells(4, 1), Cells(53, 1284)).SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = xlNone
39 End If
40 EventOff
'a remmettre en service si export ne marche plus
' Dim raEnum As Range
'Dim CelluleTiret As Range
'Set MaPlage = Sheets("ACTIVITES").Columns.ColumnDifferences(Sheets("ACTIVITES").Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 1))
'For Each raEnum In MaPlage.Areas
' CellSelect = raEnum.Address(0, 0)
'For Each CelluleTiret In ACTIVITES.Range(CellSelect)

'If ACTIVITES.Range(CelluleTiret.Address).Value = "_" Then ACTIVITES.Range(CelluleTiret.Address).Value = ""
'Next CelluleTiret
'Next raEnum
'Set MaPlage = Nothing
41 Set MaPlage = Nothing
42 End With
43 Protege CodeNameFeuil
44 EventOn
45 Exit Sub
'***************************************************************
ExecuteRequete:
46 FlagSortDeLa = "sortdela"
47 texte_SQL = "SELECT * FROM [" & CodeNameFeuil & "$" & Quoi & "]" ' "col 250
48 Set Rst = New ADODB.Recordset
49 Set Rst = Source.Execute(texte_SQL)
50 Sheets(CodeNameFeuil).Range(ou).CopyFromRecordset Rst
51 DoEvents
52 Return
53 Exit Sub
'*********************************************************************************************
GereError_Charge_ACTIVITESouMEDECINS:
54 NomProcAppelante ("Charge_ACTIVITESouMEDECINS")
55 Resume Next
End Sub
Avec mes sinceres remerciements