VBA et TCD

  • Initiateur de la discussion thib
  • Date de début
T

thib

Guest
bonjour

J'ai un tableau de base que me fournit un collegue à partir duquel je vais repartir en fonction des jours de la semaine la quantité de travail à effectuer. après avoir rempli, j'ai une macro qui actualise l'ensemble des TCD. La ca marche
Or sur ce tableau je rajoute des lignes grace à uen macro qui va chercher dans une base de données, je place alors le travail correspondant un jour de la semaine je réactualise et la bug!!!
J'ai donc conclu que c'est ce rajout qui provoque le bug je joint mes macros

Pouvez vous m'aider!!
 

thib

XLDnaute Junior
Desole mais j'arrivais pas à joindre un fichier meme en suivant la procedure

I need your help!!!!!!!!!!!!!!!!!!!!!!


CETTE MACRO ACTUALISE TOUS MES TCD

Sub actualisationdonnees()
'
' actualisationdonnees Macro
' Macro enregistrée le 10/02/2006 par tmegueulle
'prend feuille lundi et actualise'

'
Sheets('lundi').Select
Range('B7').Select
ActiveSheet.PivotTables('Tableau croisé dynamique7').RefreshTable

'met en forme la feuille lundi'
Range('A8:H29').Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range('A4').Select


ActiveWindow.SmallScroll Down:=-3

Columns('I:I').Select
Selection.ColumnWidth = 9.86
Range('D1').Select

'prend feuille mardi et actualise te met en forme'

Sheets('mardi').Select
Range('C8').Select
ActiveSheet.PivotTables('Tableau croisé dynamique8').RefreshTable

Range('A9:H29').Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range('A4').Select

Columns('I:I').Select
Selection.ColumnWidth = 9.86
Range('D1').Select

'prend feuille mercredi et actualise te met en forme'


Sheets('mercredi').Select
Range('C8').Select
ActiveSheet.PivotTables('Tableau croisé dynamique8').RefreshTable

Range('A9:H29').Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range('A4').Select

Columns('I:I').Select
Selection.ColumnWidth = 9.86
Range('D1').Select

'prend feuille jeudi et actualise te met en forme'

Sheets('jeudi').Select
ActiveWindow.ScrollColumn = 1
Range('A7').Select
ActiveSheet.PivotTables('Tableau croisé dynamique8').RefreshTable

Range('A8:H29').Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range('A4').Select

Columns('I:I').Select
Selection.ColumnWidth = 9.86
Range('D1').Select

'prend feuille vendredi et actualise te met en forme'


Sheets('vendredi').Select
Range('A8').Select
ActiveSheet.PivotTables('Tableau croisé dynamique8').RefreshTable

Range('A9:H29').Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range('A4').Select

Columns('I:I').Select
Selection.ColumnWidth = 9.86
Range('D1').Select

'prend feuille samedi et actualise te met en forme'

Sheets('samedi').Select
Range('B7').Select
ActiveSheet.PivotTables('Tableau croisé dynamique1').RefreshTable

Range('A8:H29').Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range('A4').Select
Columns('I:I').Select
Selection.ColumnWidth = 9.86
Range('D1').Select

'prend feuille tab dominique et actualise '


Sheets('tableau dominique').Select
ActiveWindow.SmallScroll Down:=-6
Range('B2').Select
ActiveSheet.PivotTables('Tableau croisé dynamique6').RefreshTable
ActiveWindow.ScrollWorkbookTabs Sheets:=-1
Sheets('Yves').Select

End Sub


CETTE MACRO ME PERMET DAJOUTER MES LIGNES


Sub Ajout()

Application.ScreenUpdating = False
For J = 6 To 1000
Sheets('Eleveur').Cells(J, 1).Select
If ActiveCell = '' Then
J = J - 1
Exit For
End If
Next J
Sheets('Eleveur').Select
Sheets('Eleveur').Range('C1').Select
Numero = ActiveCell

For K = 1 To 100
Sheets('Yves').Select
Sheets('Yves').Cells(K, 1).Select
If ActiveCell = '' Then
K = K - 1
Exit For
End If
Next K


For I = 6 To J
Sheets('Eleveur').Select
Sheets('Eleveur').Cells(I, 1).Select
If ActiveCell = Numero Then
Machaine = Sheets('Eleveur').Cells(I, 1)
Cherche = Right(Machaine, 4)
Sheets('Yves').Select
Sheets('Yves').Cells(K + 1, 1).Select
Selection.EntireRow.Insert
Sheets('Yves').Cells(K + 1, 1) = Cherche
Sheets('Yves').Cells(K + 1, 2) = Sheets('Eleveur').Cells(I, 3)
Sheets('Yves').Cells(K + 1, 3) = Sheets('Eleveur').Cells(I, 4)
Sheets('Yves').Cells(K + 1, 4) = Sheets('Eleveur').Cells(I, 5)
Sheets('Yves').Cells(K + 1, 5) = Sheets('Eleveur').Cells(I, 2)
Sheets('Yves').Cells(K + 1, 8) = Sheets('Eleveur').Cells(I, 1)
Sheets('Yves').Cells(K + 1, 11) = Sheets('Eleveur').Cells(I, 6)
Sheets('Yves').Cells(K + 1, 12) = Sheets('Eleveur').Cells(I, 7)
Sheets('Yves').Cells(K + 1, 13) = Sheets('Eleveur').Cells(I, 8)
Sheets('Yves').Cells(K + 1, 26).FormulaR1C1 = '=SUM(RC[-8]:RC[-2])'
Sheets('Yves').Cells(K + 1, 14).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, _
Formula1:='=$Z$' & K + 1 & '+($Z$' & K + 1 & '*2/100)', Formula2:='=$Z$' & K + 1 & '-($Z$' & K + 1 & '*2/100)'
Selection.FormatConditions(1).Font.ColorIndex = 3
Sheets('Eleveur').Select
Sheets('Eleveur').Visible = False
Sheets('Yves').Select
Exit For
End If
Next I


'
' Macro2 Macro
' Macro enregistrée le 13/02/2006 par tmegueulle
'

'
Range('AA2').Select
Selection.AutoFill Destination:=Range('AA2:AA30'), Type:=xlFillDefault
Range('AA2:AA30').Select
End Sub

Message édité par: thib, à: 17/03/2006 08:09
 

Pièces jointes

  • macros.ZIP
    1.9 KB · Affichages: 31
  • macros.ZIP
    1.9 KB · Affichages: 32
  • macros.ZIP
    1.9 KB · Affichages: 32

Dan

XLDnaute Barbatruc
Bonjour,

OK je vois ta macro et il y a pas mal de chose à corriger.

Bien sûr j'aimerais mieux un fichier car ce serait plus simple évidemment

Pour placer ton fichier :

Fichier inférieur à 50K
Nom de fichier : evite les espaces, les accents, etc . Utilise par exemple à thib01
Extension du fichier : .ZIP (important !)

Exemple : thib01.zip

A te lire

;)
 
T

thib

Guest
voici la tete du fichier poour mieux comprendre [file name=thib02.zip size=32965]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/thib02.zip[/file]
 

Pièces jointes

  • thib02.zip
    32.2 KB · Affichages: 34

Dan

XLDnaute Barbatruc
Bonjour Thib,

Bon il y a du boulot là je crois. Ton fichier semble faire appel à un TCD externe du nom de Yves8 qui vient probablement d'un fichier lié à ce lui que tu me donnes ici.
Dès lors, difficile de controler.
D'autre part, est-ce que le TCD sur la feuille Lundi est bien réalisé à partir de la feuille YVES ou non ?

Le code Erreur 1004, vient peut être du nom du TCD. Je vois 'Tableau croisé dynamique8', etc...
Verifie donc que le nom est bien celui là par clique droite dans le TCD puis 'options' et en haut à gauche tu vois le nom.

Comme le TCD est déjà prêt dans les feulles Lundi, mardi, ... je te conseille de nommer TCDLundi, TCDMArdi.

Le bug peut aussi venir si la database (je suppose feuille Yves ??). Est-ce que les infos que tu reçois se présentent toujours comme dans feuile YVES ou est-ce que tu complète à la suite de celles-là ?

Merci de ta réponse aux questions posées.

Si pb pour toi mets ton fichier avec la feuille YVES et la feuille Lundi par exemple.

;)
 
T

thib

Guest
bonjour dan

les TCD des feuilles Lundi mardi... sont réalisés à partir de la feuille Yves

Tu penses qu'il serait judicieux de mettre TCD lundi à la place de tableau croisé dynamique 8 et etc....?


Sinon, je recois les données telles qu'elles sont présentées dans le fichier que j'ai attaché
A la suite de ces données,je rajoute des lignes grace à une macro qui ouvre une feuille excel contenant une base de données d'éleveurs.
Ces lignes rajoutées contiennent les mêmes informations que ma liste de départ



Merci
j'espère que tout se comprend
 
T

thib

Guest
je viens de griller que presque tous mes TCD s'appelle tableau croisé dynamique 8 c'est ca qui peut provoquer un bug???????

je suis pas clair dans les bugs que j'ai!

On va séparer la feuille Yves en deux temps

- les lignes que je recois initialement: je répartit les quantités dans les jours de la semaine,j'actualise ca marche mais si je fais une modif dans les quantités et que je réactualise la ca merde

_ les lignes que je rajoute : si je ne répartit dans la semaine que ces lignes rajoutées ca marche mais si je remplit l'ensemble du planning( info recues intialement et lignes rajoutés la ca merde)

Voila
si question pas hesite du tout
 
T

thib

Guest
nouvelle info

Mon fichier bugge quand je suis au travail autrement dit en reseau avec les bases de données etc...
je dis ca parce qu en essayant mon fichier sur un ordinbateur independant (chez moi) tout marche

Si quelqu'un a une explication.....

salut
 

Dan

XLDnaute Barbatruc
Bonjour,

Je reviens sur ton fil.

Tu n'aurais pas des TCD qui sont faits à partir de la base de données par hasard, car je vois que par exemple le TCD de Lundi fait appel à cette base de données -->[Yves8.xls]Yves!$A$1:$AA$84. C'est quoi ce fichier Yves8 ?, ce n'est pas la feuille YVES qui se trouve dans ton classeur.

Je pense en effet que ce serait mieux de figer le nom des TCD. (exemple TCD-Lundi, etc...). Ce serait d'autant mieux que tes TCD ne sont que réactualisés.

Quand tu dis que cela bug, il serait intéressant de savoir sur quelle instruction de la macro.

A partir de là on pourra revoir ta macro pour la simplifier.

;)
 
T

thib

Guest
bonjour dan

j'ai merdé dans les noms de fichier je vais tout remettre dans l'ordre. yves 8 n'existe pas
Je ne poeut pas t'envoyer le fichier qui fonctionne avec les macros car trop grosse taille

En réalité mon fichier s'appelle Yves et contient les feuilles Yves,lundi,mardi....
le fichier que je t'ai envoyé doit merdé du fait que j'ai copier collé
Mes TCD vont tous chercher dans la feuille Yves


Les bug se trouve sur l'instruction 'ActiveSheet.PivotTables('Tableau croisé dynamique1').RefreshTable'

Merci
 

Statistiques des forums

Discussions
312 392
Messages
2 088 004
Membres
103 694
dernier inscrit
YOHA