salut a tout le monde j'ai un petit prob

  • Initiateur de la discussion Omarjawal
  • Date de début
O

Omarjawal

Guest
salut a tout le monde
j'ai des quistions a vous posez .

comment je peu programmer un macro qui permet de modifier une celulle de plusieur fichier Excel existant dans un dossier .





merci d'avance
 
O

omarjawal

Guest
ok



par exemple j'ai 100 fichiers Excel contients les noms des stagiares dans un repertoir
et j'ai un fichier XLS externe dans un autre repertoir
comment je peu modifier un nom de stagiaire dans les 100 fichiers tout par fois a l'aide de le fichier externe
 

MichelXld

XLDnaute Barbatruc
bonsoir Omarjawal , bonsoir Mutzik

les fichiers ont il tous la meme structure ?

si oui , peux tu placer sur le forum un exemple zippé ( sans donnees confidentielles , taille moins de 50ko , sans accentuation et sans caracteres speciaux ) pour mieux apréhender ta demande

le nom du stagiaire est toujours dans la meme cellule ou faut il effectuer une recherche dans le classeur ?



bonne soiree
MichelXld

Message édité par: MichelXld, à: 13/05/2005 22:21
 
O

omarjawalkey

Guest
ok







exemple plus detailler le problem
c:\\mes fichiers\\defaultTSF.xls
le fichier contient une userform contient une zone de texte et un bouton
ce bouton contient le code qui perlet de copie le contenu de la zone de texte dans la celulle A1 des fichier suivants :
c:\\MDB\\TSF1.xls
c:\\MDB\\TSF2.xls
.
.
.
.
.
c:\\MDB\\TSF100.xls
 

MichelXld

XLDnaute Barbatruc
bonjour Omarjawalkey

j'espere que cette procedure pourra t'aider

la macro boucle sur les classeurs nommés TSF' & i & '.xls (de 1 à 100 ) dans le repertoire 'C : \\ MDB ' .
chaque classeur doit contenir une feuille nommée 'Feuil1' pour pouvoir y insérer ( dans la cellule A1 ) le texte saisi dans le TextBox1



Code:
Private Sub CommandButton1_Click()
'necessite d'activer la reference Microsoft ActiveX DataObjects x.x Library
Dim Cn As ADODB.Connection
Dim Cd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim Fichier As String
Dim i As Byte

For i = 1 To 100 'boucle sur tous les classeurs
Fichier = 'C:\\MDB\\TSF' & i & '.xls' 'adapter le chemin des fichiers fermés

Set Cn = New ADODB.Connection
Cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
           'Data Source=' & Fichier & ';' & _
           'Extended Properties=''Excel 8.0;HDR=No;'';'

Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn

'la zone de Texte 'textBox1' va etre insérée dans la cellule A1 de la 'Feuil1'
Cd.CommandText = 'SELECT * from `Feuil1$A1:A1`'

Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic

Rst(0).Value = TextBox1.Value
Rst.Update
  
Cn.Close
Next i

Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing

MsgBox 'opération terminée '
Unload Me
End Sub


bon week end
MichelXld
 
C

Canardo

Guest
Salut Michel & Omarjaja,

Petite suggestion, si je puis me permettre.

Ne pourrait-on pas rajouter ces quelques lignes qui donne comme réf le nom de la page et l'adresse de la cellule dans lesquelles on se trouve?

MaFeuille = ActiveSheet.Name
MaCellule = ActiveCell.Address(False, False)
MaCellule2 = MaCellule & ':' & MaCellule
MaRef = 'SELECT * from ' & MaFeuille & '$' & MaCellule2

'Ce qui donnerait après, à la bonne ligne:
Cd.CommandText = MaRef

évidemment, il manque les petites apostrophes, je ne sais pas si c'est important , il y a tellement de choses inutiles dans un code(?!), enfin, je ne sais pas exactement comment les rajouter...

mais tu sauras certainement rattraper mon ignorance...

:eek:
 

Discussions similaires

Réponses
13
Affichages
179
Réponses
16
Affichages
622
Réponses
26
Affichages
955
Réponses
2
Affichages
226

Statistiques des forums

Discussions
312 391
Messages
2 087 954
Membres
103 686
dernier inscrit
maykrem