Autodesk
Options d'achat
Confidentialité | Préférences de cookies | Signaler une infraction | Conditions générales d’utilisation | Mentions légales (anglais) | © 2025 Autodesk, Inc. Tous droits réservés. | Impressum
Bonjour à tous, je vais expliquer ce que je fais, et en arriver à ma question:
Actuellement j'ai 2000 fichiers à traiter et 10000 "rechercher / remplacer" de valeurs d'attributs dans des blocs.
Pour le moment, je fais (pour chaque fichier) un attout, j'ouvre cela sous excell, je lance une routine Microsoft visual basic pour applications, j'enregistre le .txt et je fais un attin.
C'est long et fastidieux, je me suis mis en quête de:
Un lisp (.lsp) ou un script (.SCR) me permettant de désigner un dossier de dwg, exporter tous les attributs de blocs de l'espace objet (un par un), faire un Rechercher/Remplacer dans ce texte (Liste de couples fournie en xls ou txt ou peu importe), et réimporter cela dans le dwg (par attin par exemple). Et BATCH!
Auriez vous quelque chose sous le coude qui permet de faire cela? Y a t il une autre méthode plus simple?
Voici le code visual basic pour Rechercher/Remplacer dans excell: (Ce code est une partie repris d'un forum "extendoffice" sur internet, auquel j'ai demandé à ChatGPT de le compléter pour: trouver la liste des couples dans un fichier externe / une feuille / une plage, et définir la plage d'origine automatiquement sans sélection et marquer en VERT les valeurs d'attributs modifiées après le script).
Sub MultiFindNReplace()
Dim Rng As Range
Dim InputRng As Range, ReplaceRange As Range
Dim ModifiedCells As Range ' Plage de cellules modifiées
On Error Resume Next ' Ignorer les erreurs si aucune cellule n'est modifiée
' Sélectionnez la plage d'origine
'Set InputRng = Application.Selection
'Set InputRng = Application.InputBox("Original Range ", "KutoolsforExcel", InputRng.Address, Type:=8)
Set InputRng = ActiveSheet.UsedRange
' Sélectionnez la plage de remplacement
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\gricatti\DOCS\01-PRODUCTION\Liste equipements.xlsx")
Set ReplaceRange = wb.Sheets("Formatage 070").Range("$C$2:$D$95")
Application.ScreenUpdating = False
' Parcours de la plage de remplacement
For Each Rng In ReplaceRange.Columns(1).Cells
' Recherche et remplace dans la plage d'origine
InputRng.Replace What:=Rng.Value, Replacement:=Rng.Offset(0, 1).Value, LookAt:=xlWhole, MatchCase:=False
' Vérifier si une cellule a été modifiée
Dim FoundCell As Range
Set FoundCell = InputRng.Find(What:=Rng.Offset(0, 1).Value, LookAt:=xlWhole, MatchCase:=False)
If Not FoundCell Is Nothing Then
' Ajouter la cellule modifiée à la plage des cellules modifiées
If ModifiedCells Is Nothing Then
Set ModifiedCells = FoundCell
Else
Set ModifiedCells = Application.Union(ModifiedCells, FoundCell)
End If
End If
Next
' Appliquer la couleur de fond verte aux cellules modifiées
If Not ModifiedCells Is Nothing Then
ModifiedCells.Interior.Color = RGB(0, 255, 0) ' Couleur verte
End If
Application.ScreenUpdating = True
On Error GoTo 0 ' Réactiver la gestion des erreurs
End Sub
Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Automatiser attout-rechercher remplacer-attin
Résolu ! Accéder à la solution.
Avez-vous pensé à un scénario selon ce principe :
une ou des lignes de commande comme ci dessous...
(command "attedit" "n" "n" "" "" "" "AncienValeur" "NouvelleValeur")
Regarde la commande 'attedit' dans l'aide, mais possibilité de faire des changements dans une étiquette spécifique et ou un nom de bloc précis.
Après cette ligne de commande, Autolisp passe très bien dans un script.
bonjour je suis étonné de la longueur de ce code excel pour faire une recherche remplacer
- une macro devrait suffir ou hrecherche v recherche devrait faire l affaire
si il existe des solutions bien complexe mais ça sort du cadre gratuit dans ce forum je pense
n est ce pas didier ?
Autocad ce programme super bien En vba
mais il faut trouver une personne qui sache le faire.
apres ces fado tu importe une fois la trame de
tes blocs attributs avec les handles
dans excel
la mise en firme base de dinnés de ton autocad
tu reprend cette mise en firme dans excel pour effectuer tes remplacement et en l ai injectant ça modifiera tous les attributs autocad
j ai fait l opération sur des milliers d attribut
ça fontbonne super bien,
par contre je n ai jamais trouvé une personne ou payer une appli pour le faire en VBA
il ce peu que je le demande sous peu
une personne m a de nouveau fait cette demande
si tu a plusieurs fichier dwg, normalement en vba il travaillera tant que le programmeur ne lui dise de sortir par exemple
apres avoir parcourus tous les handles
idem pour excel
derniere cellule pleine et hop
mais ça c est une histoire de prog
Bonjour @gricatti
Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton APPROUVER LA SOLUTION en bas de la réponse qui apporte une solution?
Cela facilitera la navigation de nos utilisateurs qui pourront directement atteindre la solution
Sachez qui si vous avez marqué une réponse comme solution par erreur, vous pouvez annuler ce marquage en cliquant sur le menu du fil (les trois points verticaux) et choisir "pas la solution"
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.
Autodesk
Options d'achat
Confidentialité | Préférences de cookies | Signaler une infraction | Conditions générales d’utilisation | Mentions légales (anglais) | © 2025 Autodesk, Inc. Tous droits réservés. | Impressum
Saisir un nom de produit