XL 2013 feuille bilan sou condition avec autres feuilles à créer

Identifiant

XLDnaute Nouveau
Bonjour à tous,

je suis novice sur VBA et surtout à cours d'idée pour faire ce que j'ai besoin ... c'est pour ça que je me permets de venir poster ma requête à la recherche d'une âme charitable ...

Mon problème :
j'ai crée un classeur Excel comportant :
- Une feuille intitulée "bilan" qui permet de faire le récapitulatif des autres feuilles.
- Une feuille intitulée "modele" qui permet d'être la base de mes autres feuilles à créer.

A partir de ma feuille bilan un petit code me permet de créer des nouvelles feuilles sur le modèle ... ben de la feuille modele.

[Sub ajoutfeuille()

Worksheets("modele").Copy After:=Worksheets(ThisWorkbook.Sheets.Count)

End Sub]

Ce que je voudrai c'est créer une fonction mise à jour qui renvoi les données de mes feuilles créées hors la feuille modèle dans la feuille bilan suivant certaine condition.

ci après le code qui ne marche pas ... je pense que cela vient de l'appellation des feuilles où chercher les données mais je ne comprend pas pourquoi

[Sub MAJ()
'
' MAJ Macro
' mise à jour de la feuille bilan

Dim sh As Worksheet
Dim i As Long

For Each sh In Worksheets
If sh.Name <> "bilan" Then

'pour toutes les feuilles autres que la feuille bilan'

If Cells(18, 5) = "oui" Then
Sheets("bilan").Select
i = 0
Do Until (Cells(7 + i, 2) = "")
Cells(7, 2) = sh.Name.Cells(20, 6)
Cells(7, 3) = sh.Name.Cells(10, 3)
Cells(7, 8) = sh.Name.Cells(37, 4)
Cells(7, 9) = sh.Name.Cells(27, 11)
Cells(7, 10) = sh.Name.Cells(40, 4)

Else
Sheets("bilan").Select
i = 0
Do Until (Cells(32 + i, 2) = "")
Cells(32, 2) = sh.Name.Cells(20, 6)
Cells(32, 3) = sh.Name.Cells(10, 3)
Cells(32, 8) = sh.Name.Cells(28, 19)
Cells(32, 9) = sh.Name.Cells(28, 20)
Cells(32, 10) = sh.Name.Cells(28, 21)
Cells(32, 11) = sh.Name.Cells(40, 4)
Cells(32, 12) = sh.Name.Cells(39, 4)

End If
Next sh
End Sub"]

En tous cas merci pour l'aide de ceux qui voudront bien se pencher sur la question
 

Papou-net

XLDnaute Barbatruc
Re : feuille bilan sou condition avec autres feuilles à créer

Bonsoir Identifiant, et bienvenue,

Sans fichier joint, difficile d'être certain de la solution mais je t'adresse une proposition de code:

Code:
Sub MAJ()
' mise à jour de la feuille bilan
Dim sh As Worksheet
Dim i As Long

With Sheets("bilan")
For Each sh In Worksheets
If sh.Name <> "bilan" Then
'pour toutes les feuilles autres que la feuille bilan'
If sh.Cells(18, 5) = "oui" Then
i = 0
Do Until (Cells(7 + i, 2) = "")
.Cells(7, 2) = sh.Name.Cells(20, 6)
.Cells(7, 3) = sh.Name.Cells(10, 3)
.Cells(7, 8) = sh.Name.Cells(37, 4)
.Cells(7, 9) = sh.Name.Cells(27, 11)
Loop
Else
i = 0
Do Until (Cells(32 + i, 2) = "")
.Cells(32, 2) = sh.Name.Cells(20, 6)
.Cells(32, 3) = sh.Name.Cells(10, 3)
.Cells(32, 8) = sh.Name.Cells(28, 19)
.Cells(32, 9) = sh.Name.Cells(28, 20)
.Cells(32, 10) = sh.Name.Cells(28, 21)
.Cells(32, 11) = sh.Name.Cells(40, 4)
.Cells(32, 12) = sh.Name.Cells(39, 4)
Loop
End If
End If
Next sh
End With
End Sub
Cordialement.
 

Identifiant

XLDnaute Nouveau
Re : feuille bilan sou condition avec autres feuilles à créer

Bonjour Papou-net et merci de t'intéresser à mon problème;

Désolé pour le fichier joint erreur de manipulation j'avais cru l'avoir joint ... je répare ça tout de suite. (pour lancer la macro et créer des feuilles test tu peux appuyer sur le bouton orange "nouveau risque")
j'ai bien intégré la proposition de code que tu as mise mais la macro affiche le même message d'erreur que quand je la faisais tourner avant les corrections :"Erreur de compilation : Qualificateur incorrect et s'arrête sur sh.Name.Cells(20, 6)
une idée ?

Question culture G, dans le code que tu as proposé outre les erreurs de codage et de fin de séquence que tu as rajouté, quelle est le but de la ligne "With Sheets("bilan")"

je te remercie pour ton aide

bien cordialement
 

Pièces jointes

  • test.xlsm
    33.9 KB · Affichages: 25
  • test.xlsm
    33.9 KB · Affichages: 20

Identifiant

XLDnaute Nouveau
Re : feuille bilan sou condition avec autres feuilles à créer

Avec le fichier Excel complété par des exemples

Ca sera plus facile à vérifier si la macro tourne !

Cordialement
 

Pièces jointes

  • test.xlsm
    55.3 KB · Affichages: 29
  • test.xlsm
    55.3 KB · Affichages: 26

Papou-net

XLDnaute Barbatruc
Re : feuille bilan sou condition avec autres feuilles à créer

Bonjour Identifiant,

Désolé, mais n'ayant pu vérifier le code, je suis passé à côté de l'erreur de syntaxe.

Il suffit donc de remplacer 'sh.Name' par 'sh(Name) dans la boucle For Each:

Code:
Sub MAJ()
 ' mise à jour de la feuille bilan
 Dim sh As Worksheet
 Dim i As Long

 With Sheets("bilan")
 For Each sh In Worksheets
 If sh.Name <> "bilan" Then
 'pour toutes les feuilles autres que la feuille bilan'
 If sh.Cells(18, 5) = "oui" Then
 i = 0
 Do Until (Cells(7 + i, 2) = "")
 .Cells(7, 2) = sh(Name).Cells(20, 6)
 .Cells(7, 3) = sh(Name).Cells(10, 3)
 .Cells(7, 8) = sh(Name).Cells(37, 4)
 .Cells(7, 9) = sh(Name).Cells(27, 11)
 Loop
 Else
 i = 0
 Do Until (Cells(32 + i, 2) = "")
 .Cells(32, 2) = sh(Name).Cells(20, 6)
 .Cells(32, 3) = sh(Name).Cells(10, 3)
 .Cells(32, 8) = sh(Name).Cells(28, 19)
 .Cells(32, 9) = sh(Name).Cells(28, 20)
 .Cells(32, 10) = sh(Name).Cells(28, 21)
 .Cells(32, 11) = sh(Name).Cells(40, 4)
 .Cells(32, 12) = sh(Name).Cells(39, 4)
 Loop
 End If
 End If
 Next sh
 End With
 End Sub
Je pense que c'est le seul problème à résoudre car je n'ai pas poussé plus loin les investigations.

En ce qui concerne l'utilité de 'With Sheets("Bilan"), celà veut dire que toutes les références de cellules précédées d'un point (.Cells) s'appliquent aux cellules de la feuille 'Bilan'. Ca évite donc de répéter le nom de la feuille sur chaque ligne.

Cordialement.
 

Identifiant

XLDnaute Nouveau
Re : feuille bilan sou condition avec autres feuilles à créer

Bonjour Papou-net

merci pour ton temps et pour ta réponse.

Malheureusement le code tourne mais ne renvoi pas de données dans la feuille bilan :confused:. Quand je rentre manuellement la première ligne de la feuille bilan, un message d'erreur exécution 438 apparait avec l'erreur sur le code ".Cells(7, 2) = sh(Name).Cells(20, 6)".:(

Une idée ?
je te joins le fichier pour l'exemple,

Cordialement
 

Pièces jointes

  • test.xlsm
    55.8 KB · Affichages: 17
  • test.xlsm
    55.8 KB · Affichages: 19

Discussions similaires

Réponses
0
Affichages
175
Réponses
17
Affichages
909