Excel 07 Macro Explication

Résolu
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
Configuration: Windows XP
Firefox 3.0.7

2 réponses

  1. Contributeur
    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
    1. Bonjour, Pilas31
      Oui! Joli! Vraiment je te remercie de tout cœur pour cette explication.
      Merci.
      A bientôt ;o)
      0
  2. Contributeur
    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
    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