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
A voir également:

6 réponses

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
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
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
christ69fr
 
Avec la première formule cela marche plutôt pas mal mais je vais essayer ta méthode pour voir.
Merci bcp
0