Aide sur mon tableau de bords

christ69fr -  
 christ69fr -
Bonjour,

j'ai créé un tableau de bords avec une macro et celui ci me mets que l'indice ne correspond pas à la selection.
je vous joint le fichiers.
si qqun peut bien m'aider.

http://www.cijoint.fr/cjlink.php?file=cj200908/cijsR3EEaF.xls

Merci d'avance
Configuration: Windows XP
Firefox 3.0.4

6 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Avant de déposer un fichier, il serait bien d'expliquer clairement ici le problème, de mettre le morceau de code qui pose problème etc ...

    Si tu avais fait un peu attention à ton code, en passant par exemple en pas à pas, tu te serais rendu compte que l'onglet "Base de données" n'existe pas dans ton classeur. Par contre l'onglet "Bases de données", lui existe.

    ;o)
    0
  2. christ69fr
     
    Le problème est que j'ai une feuille formulaire dans lequel je veux mettre des requêtes et quand je clique sur enregistrer, il me le mets dans une feuille "tableau de bord".
    Le problème est ma macro. Quand je clique dessus, il me mets que l'indice ne correspond pas à la sélection.
    j'ai changé comme tu m'as dit l'onglet "Base de données" par "Bases de données" et maintenant, il me met "Erreur d'exécution 1004" et "Erreur définie par l'application ou par l'objet".
    je ne comprends pas.

    Merci de ton aide

    Voici le code.

    Sub transpose_dans_tableau()

    'Atteindre le formulaire et mémoriser les données
    Sheets("FORMULAIRE").Select
    Range("D1:D14").Select
    Selection.Copy

    'Test pour determiner la ligne où coller les infos dans le tableau'
    Sheets("Bases de données").Select
    i = 2
    While (Not (Range("a" & i) = ""))
    i = i + 1
    Wend
    Range("A" & i).Select
    Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, skipblanks:=False, Transpose:=True

    'Rendre vierge le formulaire
    Sheets("FORMULAIRE").Select
    Range("D1:D14").Select
    Selection.ClearContents
    Range("D1").Select

    'Retourner dans le formulaire
    Sheets("FORMULAIRE").Select
    Range("D1").Select

    End Sub
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Je n'ai pas le temps, je jeterai un coup d'oeil ce soir.

    Quelques petites remarques:

    - Il est préférable de coder dans un module, plutôt que sur une feuille. Si tu supprimes ta feuille, tu perds le code ...
    - Lorsque l'on doit manipuler plusieurs feuilles ou classeurs, il est préférable de déclarer des objets plutôt que de faire des "Select". Par exemple:

    Sub transpose_dans_tableau() 
    Dim wsFormulaire As Worksheet
    Dim wsBasededonnees As Worksheet
    
    Set wsFormulaire = ThisWorkbook.Worksheets("FORMULAIRE")
    Set wsBasededonnees  = ThisWorkbook.Worksheets("Bases de données")
     
    'Atteindre le formulaire et mémoriser les données 
    'Sheets("FORMULAIRE").Select 
    'Range("D1:D14").Select 
    'Selection.Copy 
    
    wsFormulaire.Range("D1:D14").Copy
    
    'Test pour determiner la ligne où coller les infos dans le tableau' 
    'Sheets("Bases de données").Select 
    i = 2 
    While wsBasededonnees.Range("a" & i) <> ""
       i = i + 1 
    Wend 
    
    'Range("A" & i).Select 
    'Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _ 
    'Operation:=xlNone, skipblanks:=False, Transpose:=True 
    
    wsBasededonnees.Range("A" & i).PasteSpecial Paste:=xlPasteAllExceptBorders, _ 
    Operation:=xlNone, skipblanks:=False, Transpose:=True 
    
    'Rendre vierge le formulaire 
    'Sheets("FORMULAIRE").Select 
    'Range("D1:D14").Select 
    'Selection.ClearContents 
    'Range("D1").Select 
    
    wsFormulaire.Range("D1:D14").ClearContents 
    
    'Retourner dans le formulaire 
    'Sheets("FORMULAIRE").Activate 
    'Range("D1").Select 
    wsFormulaire.Range("D1").Activate
    
    Set wsFormulaire = Nothing
    Set wsBasededonnees = Nothing
    
    End Sub


    ;o)
    0
  4. christ69fr
     
    ok, merci a toi
    j'attendrai demain si tu as le temps de le regarder ce soir.
    je vais essayer de faire comme tu m'as dit pour voir ce que cela donne.
    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
     
    Bonsoir un petit rectificatif.

    Dans la feuille "FORMULAIRE"
    Sub transpose_dans_tableau()
       Module1.transpose
    End Sub
    

    Dans un module (module1)
    Sub transpose()
    Dim wsFormulaire As Worksheet
    Dim wsBasededonnees As Worksheet
    Dim i As Integer
    
    Set wsFormulaire = ThisWorkbook.Worksheets("FORMULAIRE")
    Set wsBasededonnees = ThisWorkbook.Worksheets("Bases de données")
     
    wsFormulaire.Range("D1:D14").Copy
    
    'Test pour determiner la ligne où coller les infos dans le tableau'
    i = 2
    While wsBasededonnees.Range("A" & i) <> ""
       i = i + 1
    Wend
    
    ' Coller
    wsBasededonnees.Range("A" & i).PasteSpecial Paste:=xlPasteAllExceptBorders, _
    Operation:=xlNone, skipblanks:=False, transpose:=True
    
    'Rendre vierge le formulaire
    wsFormulaire.Range("D1:D14").ClearContents
    
    'Retourner dans le formulaire
    wsFormulaire.Activate
    wsFormulaire.Range("D1").Select
    
    Set wsFormulaire = Nothing
    Set wsBasededonnees = Nothing
    
    End Sub
    0
  7. christ69fr
     
    Avec la première formule cela marche plutôt pas mal mais je vais essayer ta méthode pour voir.
    Merci bcp
    0