Excel 07 Macro

Résolu
Bonjour,
Pouvez-vous me dire pourquoi j'ai une erreur 400 quand j'envoie ma macro.

Sub transpose_dans_tableau()
'Atteindre le formulaire et mémoriser les données
Sheets("Formulaire").Select
Range("B1:B4").Select
Selection.Copy
'Test pour déterminer la ligne où coller les infos dans le tableau
Sheets("Base_de_données").Select
valeurA2 = Range("A2").Value
If valeurA2 = "" Then
Range("A2").Select
Else
Range("A1").Select
Selection.End(xlDown).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base_de_données + 1).Select
End If
'Mémorise le n° de la ligne ou coller les données
ligne_active_base_de_données = ActiveCell.Row
'Collage avec transposition
Range("A" & ligne_active_base_de_données).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
'Rendre vierge le formulaire
Sheets("Formulaire").Select
Range("B1:B4").Select
Selection.ClearContents
Range("B1").Select
'Retourner dans le tableau
Sheets("Base_de_données").Select
Range("A1").Select
End Sub

Merci
Configuration: Windows XP
Firefox 3.0.7

6 réponses

  1. Contributeur
    Bonjour,

    Juste une remarque naïve :

    Ligne 14
    ligne_active_base = ActiveCell.Row

    ce n'est pas plutôt
    ligne_active_base_de_données = ActiveCell.Row

    A+
    0
    1. Bonjour, Pilas31
      J'ai essayé comme cela , mais cela fait une autre erreur en passant la macro en pas à pas:
      La méthode Select de la classe Range a échoué

      Sub transpose_dans_tableau()
      'Atteindre le formulaire et mémoriser les données
      Sheets("Formulaire").Select
      Range("B1:B4").Select
      Selection.Copy
      'Test pour déterminer la ligne où coller les infos dans le tableau
      Sheets("Base_de_données").Select
      valeurA2 = 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
      'Mémorise le n° de la ligne ou coller les données
      ligne_active_Base_de_données = ActiveCell.Row
      'Collage avec transposition
      Range("A" & ligne_active_Base_de_données).Select
      Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
      Operation:=xlNone, SkipBlanks:=False, Transpose:=True
      'Rendre vierge le formulaire
      Sheets("Formulaire").Select
      Range("B1:B4").Select
      Selection.ClearContents
      Range("B1").Select
      'Retourner dans le tableau
      Sheets("Base_de_données").Select
      Range("A1").Select
      End Sub
      0
  2. Bonjour,

    Peux-tu nous dire sur quelle ligne est l'erreur ?

    ;o)
    0
    1. Bonjour, Polux31
      C'est la ligne 12
      Range("A1").Select
      Merci
      0
  3. Contributeur
    Re Bonjour,

    Je ne sais pas ce qu'en pense Polux31 mais cela n'est pas possible qu'une erreur se produise sur un Range("A1").select sauf si la feuille est protégée mais dans ce cas l'erreur est plus explicite

    Donc dernière hypothèse :

    Cécile, est-ce que ta macro ne se trouve pas dans les macros de la feuille "Formulaire" Dans ce cas il faut la mettre dans un module à part.

    Merci de vérifier cela.

    A+
    0
    1. re,

      Je comprends pas pourquoi il y a tant de "Select" ...

      Il est préférable de faire par exemple :

      Sheets("Formulaire").Range("B1:B4").Copy plutôt que :

      Sheets("Formulaire").Select
      Range("B1:B4").Select
      Selection.Copy

      ou encore plus loin :
      valeurA2 = Sheets("Base_de_données").Range("A2").Value plutôt que

      Sheets("Base_de_données").Select
      valeurA2 = Range("A2").Value

      Je crois que le problème provient du fait que dans le IF, Excel ne sait pas à quelle feuille correspond la plage Range("A1") ou Range("A2").

      Il faut préciser la feuille : Sheets("Base_de_données").Range("A1").Value

      ;o)

      0
      1. Contributeur
        Oui, je suis d'accord avec toi les selects ne sont pas forcément utiles mais je pense que sa procédure doit être déclarée dans une feuille plutôt que dans un module à part, j'ai fait le test et on obtient bien l'erreur 400 du départ.

        A+
        0
      2. @pilas31Oui très certainement aussi. Sans compter que si la feuille est supprimée, le code est également perdu :oZ

        ;o)
        0
      3. @Polux31Bonjour, Pilas31 & Polux31
        Comment dois-je m'y prendre pour créer la macro dans un module à part.
        Merci
        0
    2. Bonjour,

      Dans Excel, faire Alt + F11. Dans la barre de menu, Insertion -> Module.

      EDIT: Ou encore Alt+F11, dans le panneau de gauche, sélectionner par exemple ThisWorkbook (1 clic), puis clic droit de la souris et dans le menu qui s'ouvre Insertion -> Module

      Voili voilou ...

      ;o)
      1
      1. Bonjour, Polux31
        Ah! Oui! La macro a bien fonctionné du moment que je l'ai mise dans un module à part.
        Donc pour toutes réalisations de macros, il vaut mieux que je les mettent dans un module à part.
        Puis-je regroupé les macros dans un fichiers pour les avoir de suite quand j'en besoin ?
        Merci mon problème est résolu.
        A+ Amicalement, ;-)
        0
    3. re,

      Oui tu peux. Pour cela il faut faire un fichier .xla.

      Regarde ici et là aussi , tu as des tutos qui expliquent comme faire.

      ;o)
      0
      1. Bonjour, Polux31
        Eh! bien! C'est du service rapide.
        Je suis contente de l'aide que vous m'apportez et c'est génial Excel, c'est un long apprentissage mais très stimulant quant on trouve comment l'employer ?
        J'aimerai bien voir plein d'autres façons d'employer Excel, au quotidien, pour ce faciliter la vie.
        Merci Polux31 A+ ;o)
        0
      2. @CécileDe rien, c'est avec plaisir ... ^^

        Bonne continuation.

        ;o)
        0
      3. @Polux31Bonsoir, Polux31
        Je me permets de vous solliciter parce que je n'ai pas réussi à trouver une réponse à mon problème.
        Je vous explique tout ça :
        j'aurai besoin d'une macro qui ferai un suivi de prix de la feuil Formulaire sur la troisième feuille en prenant en compte de A2 à D2 avec le prix soit au kilo, soit au litre, soit à la pièce et au-dessus du prix -la date
        http://www.cijoint.fr/cjlink.php?file=cj200904/cijHMAfz4y.xls
        Je vous remercie pour l'aide que vous m'apporterez.
        Bonne nuit
        0