EXCEL MACROS

Résolu
stages.stages Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
stages.stages Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai décrit certaines macros dans mon travail de fin d'études que j'ai utilisée lors de mon stage. Néanmoins, j'ai un peu peur d'être interrogé dessus. J'ai trouvé ces macros ici. Quelqu'un pourrait-il m'expliquer ligne par ligne ce que le code fait exactement? MERCI

Première macro

Sub supprespace1()
Dim c As Range
For Each c In Selection
c.Value = Trim(c.Value)
Next c
End Sub

Au fait, pourquoi y a-t-il des espaces avant la ligne Dim, la ligne For...? Est-ce Excel qui les places ou le créateur de la macro (j'ai compris que c'est pour savoir s'y retrouver mais à part cela)?

Bon, je vais quand même essayer d'interpréter certaines parties.

Sub supprespace1()
= création et début de la macro nommée supprespace1
For Each c In Selection
= pour chaque cellule dans la sélection
Next c
= passer à la cellule suivante
End Sub
= fin de la macro

Deuxième macro

Sub supprespace2()
Dim c As Range
If c.Value <> "" Then
If Left(c.Formula, 1) <> "=" Then c.Value = Trim(c.Value)
End If
Next c
End Sub

Bon, je vais quand même essayer d'interpréter certaines parties.

Sub supprespace2()
= création et début de la macro nommée supprespace2
For Each c In Selection
= pour chaque cellule dans la sélection
If c.Value <> "" Then
= Si la valeur de la cellule égale alors
If Left(c.Formula, 1) <> "=" Then c.Value = Trim(c.Value)
= Si à gauche de la cellule il y a une formule alors égale
End If
= fin du si
End Sub
= fin de la macro

Troisième macro

Sub RenommeOnglets()
Dim i, j
For i = 1 To Worksheets.Count
j = Format(i, "#")
ActiveWorkbook.Sheets(i).Name = "" & j
Next i
End Sub

Bon, je vais quand même essayer d'interpréter certaines parties.

Sub RenommeOnglets()
= création et début de la macro nommée RenommeOnglets
End Sub
= fin de la macro
Worksheets.Count
= compter le nombre de feuilles

Désolé de ne pas détailler plus, mais j'ai peur de dire des conneries. Dans l'ensemble, je comprends ce que font les macros, mais pas ce que toutes les lignes de code veulent dire.

Voilà j'aurais peut-être d'autres demandes d'informations sur d'autres macros, je vais voir.

Quelqu'un peut-il me dire où je peux trouver des macros pratiques qui sont détaillées pas à pas pour essayer d'apprendre petit à petit à pouvoir créer des macros?

Je remercie toutes les personnes qui m'ont déjà aidé et celles qui m'aideront.

PS: le forum a supprimé les espaces qui étaient devant les lignes des macros.

A voir également:

10 réponses

Gord21 Messages postés 918 Date d'inscription   Statut Membre Dernière intervention   289
 
Général

Sub Nom_procedure(arguments)
    Code de la procédure
End Sub

Déclaration d'une procédure Nom_procedure, les arguments étants facultatifs

Function Nom_fonction(arguments)
    Code de la fonction
End Function

Déclaration d'une fonction Nom_fonction, les arguments étants facultatifs

Première macro

Sub supprespace1() 
' Déclaration d'une variable c en tant que Range (=objet désignant une cellule ou une plage de cellules)
Dim c As Range 
' Pour chaque élément c pris dans la sélection active de la feuille
For Each c In Selection
    ' Remplacer la valeur de c par sa valeur en supprimant les espaces au début et à la fin
    c.Value = Trim(c.Value)
' Passer à l'élément c suivant (=fin de la boucle For)
Next c 
End Sub 


Deuxième macro

Sub supprespace2() 
Dim c As Range
For Each c In Selection
    ' Si la valeur contenue dans c n'est pas "" (=si c n'est pas vide) alors 
    If c.Value <> "" Then
        ' Si le premier caractère de la formule est différent de "=" (si c ne contient pas de formule) alors remplacer la valeur de c par sa valeur en supprimant les espaces au début et à la fin
        If Left(c.Formula, 1) <> "=" Then c.Value = Trim(c.Value) 
    ' Fin de la structure si
    End If 
Next c 
End Sub 


Troisième macro

Sub RenommeOnglets() 
' Déclaration de deux variables i et j de type indéfini
Dim i, j 
' Pour i = 1 à i= Nombre de feuilles contenues dans le classeur (= pour chaque feuille du classeur)
For i = 1 To Worksheets.Count
    ' j reçoit la valeur de i sous forme numérique, la valeur 0 étant remplacée par "" (ligne inutile dans cette macro, il suffit de mettre i à la place de j dans l'instruction suivante)
    j = Format(i, "#") 
    ' Renommer les feuilles du classeur : Feuil1 sera renommée 1, Feuil2 sera renommée 2, ...
	ActiveWorkbook.Sheets(i).Name = "" & j 
' Passer à la feuille suivante (= fin de la boucle For)
Next i 
End Sub 
2
Gord21 Messages postés 918 Date d'inscription   Statut Membre Dernière intervention   289
 
Bonjour,
Les espaces et tabulations sont servent à la lisibilité du code et sont mis par celui qui écrit le code.

For Each c In Selection
    c.Value = ...
Next c

Le début et la fin de la boucle For apparaissent clairement.

If c.Value <> "" Then
=> Si la cellule c n'est pas vide (la valeur de c est différente de "")

If Left(c.Formula, 1) <> "="
=> Si le premier caractère de la formule contenue dans c est le signe =


0

 
Bonjour,
Juste au passage un petit conseil.
Lorsque, dans une procédure, vous ne comprenez pas le sens d’une instruction par exemple [Trim(c.Value)].

Vous pouvez toujours sélectionner le mot [Trim] et ensuite clic la touche F1 et ainsi vous avez l’explication :

Renvoie une valeur de type Variant (String) contenant une copie d'une chaîne en supprimant les espaces de gauche (LTrim), les espaces de droite (RTrim) ou les deux (Trim).
0
stages.stages Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Gord21 et Le Pingou,

Je vous remercie pour les informations.

Bonjour Gord21,

C'est exactement ce que je voulais une explication très simple.

Bonjour Le Pingou,

Dans mon travail de fin d'études, j'aimerais mettre un tableau avec d'un côté la ligne de code et de l'autre une explication simple.

Là, l'explication pour c.Value utilise des mots de programmation qu'il faudra que j'explique aussi et je ne vais jamais m'en sortir.

Bonjour,

Quelqu'un pourrait-il détailler chaque ligne de chaque macro avec une explication simple?

Quelqu'un peut-il me dire où je peux trouver des macros pratiques qui sont détaillées pas à pas pour essayer d'apprendre petit à petit à pouvoir créer des macros?

Je remercie toutes les personnes qui m'ont déjà aidé et celles qui m'aideront.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

 
Bonjour,
Un peu de bon sens, pour ceci :
Là, l'explication pour c.Value utilise des mots de programmation qu'il faudra que j'explique aussi et je ne vais jamais m'en sortir.
Vous avez écrit : For Each c In Selection = pour chaque cellule dans la sélection
c.Value ---->>> [C] est l'élément (cellule selon vous) et le [Value] représente la propriété de l'élément [C] ; donc c'est la valeur de l'élément de la sélection.

Note: si vous sélectionnez Value et ensuite F1 vous avez :
Value, propriété
Spécifie l'état ou le contenu d'un contrôle donné.

Je veux bien vous aider en cas de doute, comme par exemple adapter votre travail en cas de non concordance... il s'agit de vos études il me semble !

0
stages.stages Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Le Pingou,

J'ai fais des études de secrétariat, nous n'avons pas abordé les macros. J'en ai utilisé quand j'ai fait mon stage pour gagner du temps. J'ai trouvé les macros ici, je n'y connais pas grand chose. J'ai abordé ce sujet dans mon travail de fin d'études car les macros sont très pratiques (gain de temps…).

Je remercie toutes les personnes qui m'ont déjà aidé et celles qui m'aideront.
0

 
Bonjour,
Regardez vers se lien : https://excel.developpez.com/cours/?page=prog
C'est très intéressant.
0
stages.stages Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir Le Pingou,

Ce lien est très intéressant. Néanmoins, je dois rendre mon travail de fin d'études écrit prochainement. Donc, je n'aurai pas le temps d'apprendre la programmation en si peu de temps et pouvoir traduire les macros. Mais je pourrai l'apprendre sur le long terme.

Quelqu'un pourrait-il m'aider à traduire les macros de manières simples?

Je remercie toutes les personnes qui m'ont déjà aidé et celles qui m'aideront.
0

 
Bonjour,
Et si vous commenciez par présenter se que vous avez déjà réalisé !
Eventuellement mettre votre fichier sur https://www.cjoint.com/ et poster le lien !
0
stages.stages Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir Le Pingou et Gord21,

Je vous remercie pour vos réponses.

Bonsoir Le Pingou,

Dans mon travail j'ai jusque décrit le code des macros sans expliquer chaque ligne de code. Néanmoins, j'explique à quoi sert la macro.

Bonsoir Gord21,

L'explication de chaque ligne de code est claire et facile à comprendre. Cela me permettra d'évoluer puisque je sais maintenant à quoi sert chaque ligne de code.
0