Microsoft 365 Pouvez-vous traduire le code VBA SVP ?

  • Initiateur de la discussion Initiateur de la discussion MOLY_
  • Date de début Date de début
  • Mots-clés Mots-clés
    code vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MOLY_

XLDnaute Nouveau
Bonjour,
J'ai créé il y a longtemeps une macro avec l'enregistrement automatique (onglet "LISTE FAC PAR MOIS").
J'ai ajouté une colonne dans mon tableau de saisie (onglet" SAISIE") et donc le résultat de la macro ne fonctionne plus.
Je ne me souviens de ce que j'ai fait.

Pouvez-vous s'il vous plait traduire mon code ? C'est à dire m'indiquer en français ce que je demande de faire à la macro pour pouvoir le modifier suite à l'ajout de cette colonne.

Merci beaucoup

Voici le code :

Sub FILTRE()
'
' FILTRE Macro
'
'
Range("C19:CM377").Select
Selection.ClearContents
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("A23").Select
Application.CutCopyMode = False
Application.CutCopyMode = False
Sheets("SAISIE").Range("Tableau1[#All]").AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("C1:CE15"), CopyToRange:=Range("C19"), Unique:= _
False
Range("C19:CU142").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With

Range("A24").Select
End Sub
 
Bonjour @MOLY_

Dans l'ordre :
Suppression des valeurs dans la plage C19:CM377
Enlève la couleur de fond dans la plage C19:CM377
Mets la police par défaut dans la plage C19:CM377
Enlève les bordures dans la plage dans la plage C19:CM377
Va en C23 (complètement inutile)
Filtre ton tableau1 dans la feuille saisie et copie en fonction d'un critère
Dans la plage C19:CU142 enlève les bordures
Enlève la couleur de fond dans la plage C19:CU142
Mets la police par défaut dans la plage C19:CU142

En gros c'est pas une macro très optimisée ......
Ta macro peut être remplace en une dizaine de ligne

Fourni le fichier et je t'optimise tout cela après manger .....

Merci de ton retour
 
Bonjour,
J'ai créé il y a longtemeps une macro avec l'enregistrement automatique (onglet "LISTE FAC PAR MOIS").
J'ai ajouté une colonne dans mon tableau de saisie (onglet" SAISIE") et donc le résultat de la macro ne fonctionne plus.
Je ne me souviens de ce que j'ai fait.

Pouvez-vous s'il vous plait traduire mon code ? C'est à dire m'indiquer en français ce que je demande de faire à la macro pour pouvoir le modifier suite à l'ajout de cette colonne.

Merci beaucoup

Voici le code :

Sub FILTRE()
'
' FILTRE Macro
'
'
Range("C19:CM377").Select
Selection.ClearContents
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("A23").Select
Application.CutCopyMode = False
Application.CutCopyMode = False
Sheets("SAISIE").Range("Tableau1[#All]").AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("C1:CE15"), CopyToRange:=Range("C19"), Unique:= _
False
Range("C19:CU142").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With

Range("A24").Select
End Sub
Bonjour,
le mode enregistrement de Macro n'est pas réellement fait pour du développement au sens strict du développement.
Il est en revanche d'une grande utilité pour récupérer par exemple la syntaxe de certains objet mais ensuite il faut le simplifier et travailler directement sur les objets concernés en les déclarant par une série de Dim, etc. etc.

Un exemple de simplification
Range("C19:CM377").Select
Selection.ClearContents

se simplifierait par
Range("C19:CM377").ClearContents
Il préférable de déclarer un champ nommé comme TB_PLAGE avec comme adresse "C19:CM377"
puis Range("TB_PLAGE").ClearContents
Gros avantage de cela : si ta plage de données évolue ==> ton code fonctionnera toujours
En résumé sauf pour des jeux de tests Express on ne met jamais de valeur en dur dans du code sauf si on est contraint.
Pour cela on fait en général une table de paramétrage spécifique dans un onglet, on nomme les paramètres par des champs nommés puis on va les récupérer en début de code via l'instruction RANGE
Exemple
Dim iParValeur as integer
Dim sParNom as string
..
..
iParValeur=Range("PARAM_VALEUR")
sParNom=Range("PARAM_NOM")

je n'apporte pas réellement la solution à ton pb car un membre expert du Forum va te remettre tout cela d'équerre... mais en revanche pour tes futurs développement essaie d'appliquer les quelques conseils....
Pour exemple tu peux télécharger les outils que j'ai posté dans les trucs & astuces et dans les téléchargements... tu verras comment on procèdes et idem pour les outils développés par les autres experts du forum que je t'invite à consulter...
Certes ça demande un peu d'investissement mais avec un gain assuré 🙂 😉
 
Bonjour @MOLY_

Dans l'ordre :
Suppression des valeurs dans la plage C19:CM377
Enlève la couleur de fond dans la plage C19:CM377
Mets la police par défaut dans la plage C19:CM377
Enlève les bordures dans la plage dans la plage C19:CM377
Va en C23 (complètement inutile)
Filtre ton tableau1 dans la feuille saisie et copie en fonction d'un critère
Dans la plage C19:CU142 enlève les bordures
Enlève la couleur de fond dans la plage C19:CU142
Mets la police par défaut dans la plage C19:CU142

En gros c'est pas une macro très optimisée ......
Ta macro peut être remplace en une dizaine de ligne

Fourni le fichier et je t'optimise tout cela après manger .....

Merci de ton retour

Merci beaucoup
Voici mon fichier en pièce jointe
1. Dans onglet "SAISIE" je renseigne les factures à établir à partir de la colonne Y
2. Dans onglet "LISTE FAC PAR MOIS", j'indique le mois de facturation et lorsque je fltre j'ai la liste des factures que je dois établir.

--> Je voulais donc ajouter une colonne dans "SAISIE" entre les colonnes N et O, mais mon analyse dans "LISTE FAC PAR MOIS" ne suit plus.

Merci encore
 

Pièces jointes

Bonjour,
le mode enregistrement de Macro n'est pas réellement fait pour du développement au sens strict du développement.
Il est en revanche d'une grande utilité pour récupérer par exemple la syntaxe de certains objet mais ensuite il faut le simplifier et travailler directement sur les objets concernés en les déclarant par une série de Dim, etc. etc.

Un exemple de simplification
Range("C19:CM377").Select
Selection.ClearContents

se simplifierait par
Range("C19:CM377").ClearContents
Il préférable de déclarer un champ nommé comme TB_PLAGE avec comme adresse "C19:CM377"
puis Range("TB_PLAGE").ClearContents
Gros avantage de cela : si ta plage de données évolue ==> ton code fonctionnera toujours
En résumé sauf pour des jeux de tests Express on ne met jamais de valeur en dur dans du code sauf si on est contraint.
Pour cela on fait en général une table de paramétrage spécifique dans un onglet, on nomme les paramètres par des champs nommés puis on va les récupérer en début de code via l'instruction RANGE
Exemple
Dim iParValeur as integer
Dim sParNom as string
..
..
iParValeur=Range("PARAM_VALEUR")
sParNom=Range("PARAM_NOM")

je n'apporte pas réellement la solution à ton pb car un membre expert du Forum va te remettre tout cela d'équerre... mais en revanche pour tes futurs développement essaie d'appliquer les quelques conseils....
Pour exemple tu peux télécharger les outils que j'ai posté dans les trucs & astuces et dans les téléchargements... tu verras comment on procèdes et idem pour les outils développés par les autres experts du forum que je t'invite à consulter...
Certes ça demande un peu d'investissement mais avec un gain assuré 🙂 😉
Merci beaucoup
 
Bonjour,


Effectivement j'y ai récemment vu des choses qui m'ont énormément plues.
D'ailleurs, j'en profite pour remercier oguruma pour tous ses partages d'astuces. 👍
Re.. Merci pour ce retour 🙂
Bon aller la prochaine fois je fais tout cela en COBOL ou encore en PL1 ou en GAP II (la belle époque des 36) avec un bon vieux JCL "des familles" 😉 🙂
Nannn j'rigole
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
280
  • Question Question
XL pour MAC Recherche date
Réponses
5
Affichages
2 K
Réponses
8
Affichages
914
Retour