comprendre cette macro!!!

T

titin

Guest
bonsoir à tous

Quelqu'un peut il m'expliqué cette macro.
En particulier la ligne en gras

MERCI

Sub Macro2()
Me.CommandButton1.Caption = Me.ListBox1.Value + ' OK ?'
Sheets('pointages').Unprotect
Range('S2').Select
ActiveCell.FormulaR1C1 = 'POIRE'
Range('C17:AG40').Select
Selection.ClearContents
Range('C5').Select
ActiveCell.FormulaR1C1 = '=R[45]C'
Selection.AutoFill Destination:=Range('C5:AG5') , Type:=xlFillDefault

Range('A2').Select
Sheets('pointages').Protect
End Sub
 

Hellboy

XLDnaute Accro
Bonjour titin

Ma compréhension du code:


' Me    fait référence au userform qui contient ce code
' Le text qui va parraitre sur le bouton1 provient de la listebox1 avec en supplément le ' OK '
Me.CommandButton1.Caption = Me.ListBox1.Value + ' OK ?'
'    Déprotection de la feuille pointages
Sheets('pointages').Unprotect
' sélection de la cellule s2
Range('S2').Select
' inscriptions de la valeur POIRE ds la cellule s2
ActiveCell.FormulaR1C1 = 'POIRE'
' Sélection des cellules de C17 à AG40
Range('C17:AG40').Select
' Effacement du contenu des cellules de C17 à AG40
Selection.ClearContents
' Sélection de la cellule c5
Range('C5').Select
' Insciption de la valeur de la cellule c50 dans la cellule C5
' Il faut comprendre que le = sera inscrit telquel et que le
' R[45] signifie un décalage enterme de ligne(R = Row en englais qui signifie ligne)
' Donc le départ est la ligne 5 et on ajoute 45 a cette ligne on obtient 50
' Dans ce cas ci il n'y a pas de décalage de colonne. On aurait aussi pu écrire = R[45]C[0]
ActiveCell.FormulaR1C1 = '=R[45]C'
' Basé sur ce qui viens d'être écrit dans la cellule C5, un remplissage
' automatique se fera avec cette commande avec comme mandat de remplir de C5 à AG5
Selection.AutoFill Destination:=Range('C5:AG5'), Type:=xlFillDefault
Range('A2').Select
Sheets('pointages').Protect
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Titin, bonsoir le forum,

Allez ! je m'y colle... J'adore ça, Arf !


Sub Macro2()

'bizarre de trouver 'Me' dans une macro et non pas dans une code événementiel de l'UserForm lui même
'le mieux serait 'UserForm1.CommandButton1.Caption = Me.ListBox1.Value + ' OK ?' pour éviter un bug (UserForm1 : à remplacer par le véritable nom de l'userForm)

'le texte du bouton de l'UserForm en cours prend le nom affiché dans la ListBox1 + OK ?
'si la ListBox1 affiche 'Tartampion' alors le texte du bonton devient 'Tartampion OK ?'
'Normalement ça devrait buguer car ce n'est pas le + qui s'utilise mais le & : Me.ListBox1.Value & 'OK ?'
Me.CommandButton1.Caption = Me.ListBox1.Value + ' OK ?'

'enlève la protection de l'onglet 'pointages'
Sheets('pointages').Unprotect

'sélectionne la cellule S2 de l'onglet actif (j'imagine que c'est 'pointages')
Range('S2').Select

'écrit 'POIRE' dans la cellule S2
ActiveCell.FormulaR1C1 = 'POIRE'

'sélectionne la plage C17:AG40
Range('C17:AG40').Select

'efface le contenu de cette plage
Selection.ClearContents

'sélectionne la cellule C5
Range('C5').Select

'dans C5 place la formule '=C50' ('=R[45]C' signifie =(R[45]: déplacement de 45 lignes/
'C rien : rete dans la même colonne). Donc C5 plus 45 lignes ça fait C50, d'où la formule '=C50'
ActiveCell.FormulaR1C1 = '=R[45]C'

'l'autofill correspond à faire glisser en utilisant la poignée de recopie, petit carré noir
'en bas à dropite d'une cellule sélectionné. le but est de recopier la formule =C50 de
'C5 à AG5. Comme c'est du relatif on aura en D5:'=D50' en E5:'=E50' ... en AG5:'=AG50'
Selection.AutoFill Destination:=Range('C5:AG5'), Type:=xlFillDefault

'sélectionne la cellule A2
Range('A2').Select

'protège l'onglet 'pointages'
Sheets('pointages').Protect
End Sub

la même un peut simplifiée :


Sub Macro2()
Me.CommandButton1.Caption = Me.ListBox1.Value & ' OK ?'
Sheets('pointages').Unprotect
Range('S2').Value = 'POIRE'
Range('C17:AG40').ClearContents
Range('C5').FormulaR1C1 = '=R[45]C'
Range('C5').AutoFill Destination:=Range('C5:AG5'), Type:=xlFillDefault
Range('A2').Select
Sheets('pointages').Protect
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Titin, Philippe, bonsoir le forum,

Apparemment Philippe aime ça aussi et en plus il est plus rapide... Bonsoir Philippe.

Je ne sais pas ce qui se passe ce soir mais je rencontre de sérieux problèmes pour éditer mes post.


Message édité par: Robert, à: 27/11/2005 18:42
 

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 139
Membres
104 047
dernier inscrit
bravetta