Batch sur excel pour remplacer sur plusie
yahi
-
yahi -
yahi -
Bonjour,
salut mes amis
j'ai un probleme et j espere bien que vos m aider.
je travaille chaque jours des fichiers excel et si il ya un changement sur un libelle je dois le faire manuellement et pour tous les fichiers excel!!!!!!!!!!! voir 85 fichier
c'est un peu penible.
un batch qui cherche le libelle et le remplace sur tous les fichiers xls dans un repertoires (les fichiers ont toujous la suntax suivante 20111012.
salut mes amis
j'ai un probleme et j espere bien que vos m aider.
je travaille chaque jours des fichiers excel et si il ya un changement sur un libelle je dois le faire manuellement et pour tous les fichiers excel!!!!!!!!!!! voir 85 fichier
c'est un peu penible.
un batch qui cherche le libelle et le remplace sur tous les fichiers xls dans un repertoires (les fichiers ont toujous la suntax suivante 20111012.
A voir également:
- Batch sur excel pour remplacer sur plusie
- Liste déroulante excel - Guide
- Comment trier par ordre alphabétique sur excel - Guide
- Comment calculer la moyenne sur excel - Guide
- Word et excel gratuit - Guide
- Remplacer sur word - Guide
7 réponses
bonjour
un libelle est le contenu de la case
donc chaque fichier xls comporte une seule feuille et tous ils ont la même structure. et je les regroupe dans un seule dossier
merci pour votre reponse
un libelle est le contenu de la case
donc chaque fichier xls comporte une seule feuille et tous ils ont la même structure. et je les regroupe dans un seule dossier
merci pour votre reponse
en plus ce batch doit les chercher et remplacer dans des cellules et place # .
je vais explique mieux
j'ai 100 fichier xls comporte plusieurs donnee .maintenant je veux remplacer un nom (paris) par (londres) dans 100 xls voila au lieu d 'ouvrir les 100 feuille et corriger par (chercher puis remplacer) je veux automatiquement les corriger en une seule fois.
merci de votre collaboration
je vais explique mieux
j'ai 100 fichier xls comporte plusieurs donnee .maintenant je veux remplacer un nom (paris) par (londres) dans 100 xls voila au lieu d 'ouvrir les 100 feuille et corriger par (chercher puis remplacer) je veux automatiquement les corriger en une seule fois.
merci de votre collaboration
!!!! tous les classeurs excel dans le même répertoire !!!
Le fichier qui te permet ce que tu souhaites
Le code VBA :
Le fichier qui te permet ce que tu souhaites
Le code VBA :
Sub ModifierLibelle()
'Sources pour le choix du répertoire
'et la boucle sur ses fichiers
'http://silkyroad.developpez.com/VBA/ListView/#LII-I
'http://www.developpez.net/forums/d270516/autres-langages/general-visual-basic-6-vbscript/vbscript/vos-contributions-vbscript/faq-utiliser-boite-dialogue-selection-repertoire/
Dim oShell As Object, strFileName As Object
Dim oFolder As Object
Dim oFolderItem As Object
Dim OldLibelle As String, NewLibelle As String, NomClasseur As String
Dim Trouve As Range
Application.ScreenUpdating = False
NomClasseur = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
OldLibelle = Sheets(1).Range("D5").Value
NewLibelle = Sheets(1).Range("D6").Value
If OldLibelle = "" Or NewLibelle = "" Then
MsgBox "Saisie obligatoire en D5 et D6"
Exit Sub
End If
Set oShell = CreateObject("Shell.Application")
Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&, "c:\")
If oFolder Is Nothing Then
MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else
For Each strFileName In oFolder.Items
If oFolder.GetDetailsOf(strFileName, 2) = "Feuille de calcul Microsoft Excel" And strFileName <> NomClasseur Then
Workbooks.Open oFolder.ParentFolder.ParseName(oFolder.Title).Path & "\" & strFileName
With Workbooks(strFileName & ".xls")
With ActiveSheet
Set Trouve = .Cells.Find(OldLibelle)
If Trouve Is Nothing Then
Else
Trouve.Value = NewLibelle
End If
Set Trouve = Nothing
End With
.Save
.Close
End With
End If
Next
End If
Application.ScreenUpdating = True
End Sub
merci pour la reponse hhhhhhhhhhhhhh mais je ne connais pas le vba
si si possible tu me decris les etapes
desole
si si possible tu me decris les etapes
desole
Si si possible ;-))
Code commenté :
Code commenté :
Sub ModifierLibelle()
'Sources pour le choix du répertoire
'et la boucle sur ses fichiers
'http://silkyroad.developpez.com/VBA/ListView/#LII-I
'http://www.developpez.net/forums/d270516/autres-langages/general-visual-basic-6-vbscript/vbscript/vos-contributions-vbscript/faq-utiliser-boite-dialogue-selection-repertoire/
'déclaration des variables
Dim oShell As Object, strFileName As Object
Dim oFolder As Object
Dim oFolderItem As Object
Dim OldLibelle As String, NewLibelle As String, NomClasseur As String
Dim Trouve As Range
'empêche le rafraichissement de l'écran pour gagner en rapidité
Application.ScreenUpdating = False
'remplissage des variables :
'NomClasseur = comme son nom l'indique... le nom de ce classeur
'OldLibelle = comme son nom l'indique, l'ancien libellé (à remplacer)
'NewLibelle = comme son nom l'indique... le nouveau libellé
NomClasseur = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
'on a inscrit l'ancien libellé en D5
OldLibelle = Sheets(1).Range("D5").Value
'on a inscrit le nouveau libellé en D6
NewLibelle = Sheets(1).Range("D6").Value
'test si les libellés (ancien et nouveau) sont bien remplis
If OldLibelle = "" Or NewLibelle = "" Then
'sinon, message à l'utilisateur
MsgBox "Saisie obligatoire en D5 et D6"
'et on ne fait plus rien, on sort de la procédure
Exit Sub
End If
'Ici, partie technique consistant à ouvrir une fenêtre
Set oShell = CreateObject("Shell.Application")
'permettant le choix du répertoire ou se situent les fichiers excel
Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&, "c:\")
'en cas d'annulation par l'utilisateur
If oFolder Is Nothing Then
'message d'abandon
MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else
'boucle sur tous les fichiers du répertoire
'ne tiens pas compte de l'extension donc sur TOUS les fichiers
For Each strFileName In oFolder.Items
'test si :
'1- le fichier est bien un fichier Excel
'oFolder.GetDetailsOf(strFileName, 2) = "Feuille de calcul Microsoft Excel"
'2- le fichier n'est pas celui qui contient la macro (le mien, ce classeur ci)
'And strFileName <> NomClasseur
If oFolder.GetDetailsOf(strFileName, 2) = "Feuille de calcul Microsoft Excel" And strFileName <> NomClasseur Then
'si c'est tout bon, on ouvre le classeur
Workbooks.Open oFolder.ParentFolder.ParseName(oFolder.Title).Path & "\" & strFileName
'début du bloc "dans le classeur qu'on vient d'ouvrir"
With Workbooks(strFileName & ".xls")
'bloc dans la feuille active (en même temps, il n'y a qu'une feuille par classeur...)
With ActiveSheet
'on cherche dans toutes les cellules l'ancien libellé
Set Trouve = .Cells.Find(OldLibelle)
's'il ne s'y trouve pas on fait rien
If Trouve Is Nothing Then
Else
's'il s'y trouve on remplace par le nouveau libellé dans la cellule
'(Trouve = cellule ou on l'a trouvé)
Trouve.Value = NewLibelle
End If
Set Trouve = Nothing
'fin du bloc feuille
End With
'on enregistre les modifs
.Save
'on ferme
.Close
'fin du bloc classeur
End With
End If
Next
End If
'on rétablit le rafraichissement d'écran
Application.ScreenUpdating = True
End Sub
bonjour j ai essaye mais ca marche pas
je vais mieux expliquer
voila j'ai 100 feuille execl sur un dossier
pour chaque feuille :
date heure chaine marque libelle (intersection g4)
francois
malak
cesar
tous les feuilles sont remplis par ces libelles qui sont differentes
ce que je veux c (est un batch qui permet de changer ''cesar"" par ""shakira""
dans tous ces 100 feuilles xls
merci pour votre entiere collaboratiob
je vais mieux expliquer
voila j'ai 100 feuille execl sur un dossier
pour chaque feuille :
date heure chaine marque libelle (intersection g4)
francois
malak
cesar
tous les feuilles sont remplis par ces libelles qui sont differentes
ce que je veux c (est un batch qui permet de changer ''cesar"" par ""shakira""
dans tous ces 100 feuilles xls
merci pour votre entiere collaboratiob
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Je reviendrais répondre sur ce sujet lorsque celui-ci sera exposé de manière claire et définitive.
Je reviendrais répondre sur ce sujet lorsque celui-ci sera exposé de manière claire et définitive.
voila j'ai 80 fichier xls tous ont cette structure :
date-chaine-agent-heure-libelle(g4)
---------------------------------jack
---------------------------------fera
----------------------------------nadal
----------------------------------shakira
ces libelles se repete dans ces 80 xls et par suite lorsque je veux remplacer ''fera'' par ''fraca'' je dois ouvrir les 80 xls et faire la modif (rechercher-remplacer)
et c'est pénible pour moi.
donc ce que je veux c'est un macro qui permet de remplacer dans ces 80 xls en même temps les fichiers xls sont stocke dans le même dossier.
date-chaine-agent-heure-libelle(g4)
---------------------------------jack
---------------------------------fera
----------------------------------nadal
----------------------------------shakira
ces libelles se repete dans ces 80 xls et par suite lorsque je veux remplacer ''fera'' par ''fraca'' je dois ouvrir les 80 xls et faire la modif (rechercher-remplacer)
et c'est pénible pour moi.
donc ce que je veux c'est un macro qui permet de remplacer dans ces 80 xls en même temps les fichiers xls sont stocke dans le même dossier.