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

2 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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. 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
  2. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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. Cécile
       
      Bonjour, Pilas31
      Oui! Joli! Vraiment je te remercie de tout cœur pour cette explication.
      Merci.
      A bientôt ;o)
      0