Excel 07 Macro Explication

Résolu
Cécile -  
 Cécile -
Bonjour,
J'ai un bout de macro qui fonctionne mais mais j'aimerai bien la comprendre.
Quelqu'un pourrait me l'expliquer en détail son fonctionnement ?
Merci.

valeurA2 = Sheets("Base_de_données").Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_Base_de_données = ActiveCell.Row
Range("A" & ligne_active_Base_de_données + 1).Select
End If

Range("A" & ligne_active_Base_de_données).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
A voir également:

2 réponses

pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   646
 
RE Bonjour,

Comme l'avait suggéré Polux31 dans l'autre topic, je te propose une écriture plus compacte de ta macro. Elle fait la même chose :
Sub transpose_dans_tableau()
    Sheets("Formulaire").Range("B1:B4").Copy
    Sheets("Base_de_données").Select
    If Range("A2").Value = "" Then
        Range("A2").Select
    Else
        Range("A" & Range("A1").End(xlDown).Row + 1).Select
    End If
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    Sheets("Formulaire").Range("B1:B4").ClearContents   
    Range("A1").Select
End Sub


On évite ainsi les select en trop qui ralentissent Excel
Bonne continuation .
A+
1
Cécile
 
Bonjour, Pilas31
Génial!! Cela me plait vraiment que tu m'ai proposé une macro plus compacte car l'autre macro fonctionne; tu pouvais très bien laisser comme tel.
J'apprécie cette macro car moi aussi j'aime bien faire simple au lieu de ce compliquer la vie, pour le même résultat .
Bravo. A+ ;o)
0
pilas31 Messages postés 1825 Date d'inscription   Statut Contributeur Dernière intervention   646
 
Bonjour,

Voici une explication pour tes lignes

'Initialise la variable valeurA2 avec la valeur de la cellule A2 de la feuille Base_de _données
valeurA2 = Sheets("Base_de_données").Range("A2").Value

If valeurA2 = "" Then 'teste si la valeur est vide
Range("A2").Select ' si elle est vide selectionne la cellule A2
Else
Range("A1").Select ' si elle n'est pas vide selectionne la cellule A1
'cherche vers le bas (à partir de A1) la dernière cellule non vide (par exemple A9):
Selection.End(xlDown).Select
ligne_active_Base_de_données = ActiveCell.Row 'mémorise le numéro de la ligne (par exemple 9)
Range("A" & ligne_active_Base_de_données + 1).Select 'selectionne la cellule suivante (exemple A10)
' remarque & est l'opérateur de concaténation ici il assemble la lettre A et le numéro de ligne+1
End If
'( remarque : ici il manque du code par rapport à ton autre topic)
Range("A" & ligne_active_Base_de_données).Select 'toujours pareil selectionne la cellule
' on colle à partir de la cellule selectionnée (ce qui a été copié par exemple la colonne B1:B4 de la feuille formulaire)
' en faisant une transposition (la colonne devient une ligne):
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True

A+
0
Cécile
 
Bonjour, Pilas31
Oui! Joli! Vraiment je te remercie de tout cœur pour cette explication.
Merci.
A bientôt ;o)
0