Excel 07 Macro Explication

Résolu/Fermé
Cécile - 26 mars 2009 à 13:45
 Cécile - 26 mars 2009 à 21:38
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 vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
26 mars 2009 à 19:03
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
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 vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
26 mars 2009 à 18:39
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
Bonjour, Pilas31
Oui! Joli! Vraiment je te remercie de tout cœur pour cette explication.
Merci.
A bientôt ;o)
0