Excel 07 Macro

Résolu
Cécile -  
 Corrine -
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. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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. Cécile
       
      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
  2. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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. Cécile
       
      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
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

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

    ;o)
    0
    1. Cécile
       
      Bonjour, Polux31
      C'est la ligne 12
      Range("A1").Select
      Merci
      0
  4. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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. pilas31 Messages postés 1878 Statut Contributeur 648
       
      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
      1. Polux31 Messages postés 7219 Statut Membre 1 204 > pilas31 Messages postés 1878 Statut Contributeur
         
        Oui très certainement aussi. Sans compter que si la feuille est supprimée, le code est également perdu :oZ

        ;o)
        0
      2. Cécile > Polux31 Messages postés 7219 Statut Membre
         
        Bonjour, Pilas31 & Polux31
        Comment dois-je m'y prendre pour créer la macro dans un module à part.
        Merci
        0
  7. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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. Cécile
       
      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
      1. Polux31 Messages postés 7219 Statut Membre 1 204 > Cécile
         
        De rien, c'est avec plaisir ... ^^

        Bonne continuation.

        ;o)
        0
      2. Corrine > Polux31 Messages postés 7219 Statut Membre
         
        Bonsoir, 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