VBA variation d'une donnée input selon Scénario puis report du résultat

Bonjour à tous,

Je fais appel à vos connaissances en Excel (VBA sans doute) pour m'aider sur un problème qui m'a perturbé tout le week-end (vraiment.. )

J'ai un fichier avec 3 feuilles :

  • données
  • calcul
  • résultat

Je dois tester plusieurs scénarios en changeant la colonne "B" de "données" avec les données des colonnes scénario 1,2,3,4 (colonne K,L,M,N)

Il s'agit de données horaires (8760 lignes sur l'année). Je récupère ces données dans un TCD dans la seconde feuille afin d'obtenir un résultat dans la case H17.

Je reporte ce résultat dans la feuille résultat.

[u]Pour résumer, j'ai 1 colonne input que je souhaite faire varier dans la première feuille et récupérer le résultat donné dans la case H17 de la deuxième feuille pour la mettre dans le tableau résultat situé dans la troisième et dernière feuille.

[/u]

Je pensais faire une boucle for scénario 1 à scenario 4:

  • mettre les valeurs du bon scénario dans la colonne "B"
  • actualiser le tableau croisé dynamique
  • copier la case H17 de la deuxième feuille dans la case B2/ C2/D2/E2 selon scénario de la 3ème feuille.

Je ne sais pas si j'ai été claire, je reconnais que le problème est compliqué à expliquer mais plus simple dans le fichier joint.

Quelqu'un aurait-il une solution à me proposer ?

Je pense comprendre la logique du problème mais suis incapable de le traduire en VBA. (pour l'instant, j'espere apprendre prochainement)

Merci d'avance pour votre retour,

Orianne

Bonjour,

une proposition

Sub aargh()
    With Sheets("données")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 1 To 4
            .Cells(2, 10 + i).Resize(dl).Copy
            .Cells(2, "H").PasteSpecial xlValues
            Sheets("calcul").PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
            Sheets("résultats").Cells(2, i + 1) = Sheets("calcul").Range("H17")
        Next i
    End With
End Sub

Merci pour ta réponse mais j'ai une erreur d'exécution 1004 quand j'essaye ton code au niveau de l'actualisation du TCD.

Je ne peux donc pas tester le code

Sinon j'arrive à comprendre la globalité de ton code sauf cette ligne :

dl = .Cells(Rows.Count, 1).End(xlUp).Row

A quoi correspond dl ?

Merci d'avance pour ton retour ,

Orianne

Merci pour ta réponse mais j'ai une erreur d'exécution 1004 quand j'essaye ton code au niveau de l'actualisation du TCD.

Je ne peux donc pas tester le code

j'ai rencontré le même problème avec ton fichier. il n'y a pas moyen de faire le refresh du TCD, car tu as apparemment modifié le tableau de données (il manque des entêtes de colonnes pour les colonnes vides).

Sinon j'arrive à comprendre la globalité de ton code sauf cette ligne :

dl = .Cells(Rows.Count, 1).End(xlUp).Row

A quoi correspond dl ?

dl pour dernière ligne, la fonction retourne le n° de la dernière ligne en colonne 1 contenant des données

Merci pour le complément d'informations.

Ne pourrait-on pas actualiser l'ensemble des tableaux du fichier sans préciser le nom de celui-ci ?

Quand j'utilise le raccourci CTRL+ALT+F5 pour "actualiser tout", le tableau se met correctement à jour.

Peut être pouvons nous contourner le problème ?

Re-bonjour,

pour moi, cela n'empêche pas de recevoir le message d'erreur.

mais tu peux essayer de remplacer

Sheets("calcul").PivotTables("Tableau croisé dynamique1").PivotCache.Refresh

par

ActiveWorkbook.RefreshAll
Rechercher des sujets similaires à "vba variation donnee input scenario puis report resultat"