EXCEL - Calcul avant impressions automatiques
Résolu/Fermé
Khanonji
-
26 août 2010 à 23:56
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 28 août 2010 à 10:59
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 28 août 2010 à 10:59
A voir également:
- EXCEL - Calcul avant impressions automatiques
- Calcul moyenne excel - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
3 réponses
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
Modifié par eriiic le 27/08/2010 à 07:22
Modifié par eriiic le 27/08/2010 à 07:22
Bonjour,
Tu devrais aussi mettre la partie qui numérote tes feuilles...
(je suppose que tu n'as pas désactivé le calcul automatique dans les options)
eric
Tu devrais aussi mettre la partie qui numérote tes feuilles...
(je suppose que tu n'as pas désactivé le calcul automatique dans les options)
eric
Merci pour ta réactivité, Eric.
Bien entendu, j'ai vérifié que l'option calcul automatique était bien activée dès que j'ai remarqué ce problème d'actualisation.
Alors, j'avais voulu faire simple dans mon message précédent mais en fait j'ai mis 2 fiches de suivi par feuille (pour avoir un format A5) donc il y a quelques lignes en plus. J'ai distingué les cas "moins de 10 fiches"/"au moins 10 fiches" et "nombre de fiches pair"/"nombre de fiches impair" mais ça doit pouvoir se simplifier je pense.
Voici donc la partie qui crée et numérote les fiches :
Private Sub Copie_Click()
Dim i, z
z = Sheets("Tableau").Range("J2").Value
If z < 10 Then
For i = 1 To z
If (i And 1) = 0 Then
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°0" & i
Else
End If
Next i
Else
For i = 1 To 9
If (i And 1) = 0 Then
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°0" & i
Else
End If
Next i
For i = 10 To z
If (i And 1) = 0 Then
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°" & i
Else
End If
Next i
End If
If (z And 1) Then
If z < 10 Then
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°0" & i
Else
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°" & i
End If
Else
End If
End Sub
Bien entendu, j'ai vérifié que l'option calcul automatique était bien activée dès que j'ai remarqué ce problème d'actualisation.
Alors, j'avais voulu faire simple dans mon message précédent mais en fait j'ai mis 2 fiches de suivi par feuille (pour avoir un format A5) donc il y a quelques lignes en plus. J'ai distingué les cas "moins de 10 fiches"/"au moins 10 fiches" et "nombre de fiches pair"/"nombre de fiches impair" mais ça doit pouvoir se simplifier je pense.
Voici donc la partie qui crée et numérote les fiches :
Private Sub Copie_Click()
Dim i, z
z = Sheets("Tableau").Range("J2").Value
If z < 10 Then
For i = 1 To z
If (i And 1) = 0 Then
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°0" & i
Else
End If
Next i
Else
For i = 1 To 9
If (i And 1) = 0 Then
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°0" & i
Else
End If
Next i
For i = 10 To z
If (i And 1) = 0 Then
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°" & i
Else
End If
Next i
End If
If (z And 1) Then
If z < 10 Then
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°0" & i
Else
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°" & i
End If
Else
End If
End Sub
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
Modifié par eriiic le 27/08/2010 à 22:35
Modifié par eriiic le 27/08/2010 à 22:35
Re,
J(ai peut-être de la crotte dans les yeux mais si je vois la création des feuilles et leur nommage, je ne vois pas que tu inscrives quoique ce soit sur les feuilles.
Je suppose que tu as mis une formule pour récupérer le n° du nom de l'onglet mais (de mémoire) ça ne marche que si le fichier est enregistré. C'est peut-être pour ça que ça coince...
C'est plus simple de mettre ton numéro directement dans une cellule puisque tu as du vba, par ex: [A3]="Fiche de suivi n°" & i
eric
J(ai peut-être de la crotte dans les yeux mais si je vois la création des feuilles et leur nommage, je ne vois pas que tu inscrives quoique ce soit sur les feuilles.
Je suppose que tu as mis une formule pour récupérer le n° du nom de l'onglet mais (de mémoire) ça ne marche que si le fichier est enregistré. C'est peut-être pour ça que ça coince...
C'est plus simple de mettre ton numéro directement dans une cellule puisque tu as du vba, par ex: [A3]="Fiche de suivi n°" & i
eric
Ah oui je suis bête j'ai pas précisé ce point. En fait ma fiche de suivi type possède des cellules hors zone d'impression qui permettent le remplissage des fiches.
C'est fait à l'arrache et risque de piquer les yeux d'un utilisateur averti mais bon...
Cellules hors zone d'impression :
J71=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;21)
J72=DROITE(J71;2)
K72=CONCATENER("Tableau!A";J72)
K73=CONCATENER("Tableau!B";J72)
K74=CONCATENER("Tableau!C";J72)
K75=CONCATENER("Tableau!D";J72)
K76=CONCATENER("Tableau!E";J72)
Cellules à remplir dans les fiches de suivi :
H12=INDIRECT(K72)
Z12=INDIRECT(K73)
H16=INDIRECT(K74)
Z12=INDIRECT(K75)
H20=INDIRECT(K76)
Comme tu peux le constater, c'est un peu biscornu ^^
Si tu le souhaites, je peux t'envoyer le fichier pour que tu aies un meilleur aperçu du problème.
C'est fait à l'arrache et risque de piquer les yeux d'un utilisateur averti mais bon...
Cellules hors zone d'impression :
J71=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;21)
J72=DROITE(J71;2)
K72=CONCATENER("Tableau!A";J72)
K73=CONCATENER("Tableau!B";J72)
K74=CONCATENER("Tableau!C";J72)
K75=CONCATENER("Tableau!D";J72)
K76=CONCATENER("Tableau!E";J72)
Cellules à remplir dans les fiches de suivi :
H12=INDIRECT(K72)
Z12=INDIRECT(K73)
H16=INDIRECT(K74)
Z12=INDIRECT(K75)
H20=INDIRECT(K76)
Comme tu peux le constater, c'est un peu biscornu ^^
Si tu le souhaites, je peux t'envoyer le fichier pour que tu aies un meilleur aperçu du problème.
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
28 août 2010 à 00:19
28 août 2010 à 00:19
Déjà dans le 1er code tu peux supprimer tous tes cas et remplacer :
ActiveSheet.Name = "Fiche de suivi n°0" & i
par :
ActiveSheet.Name = "Fiche de suivi n°" & right("0" & i,2)
ton n°sera toujours formaté sur 2 chiffres.
et sous cette ligne ajoute (?) :
[J71]= "Fiche de suivi n°" & right("0" & i,2)
pour remplacer ta formule.
Comme tu peux le constater, c'est un peu biscornu ^^
Mais non, c'est beaucoup biscornu. Je n'ai pas eu le courage de remonter les formules pour retrouver la chaine fabriquée...
C'est pourquoi je ne suis pas sûr de la modif en J71, et il faudra mettre un calculate.
Ca serait beaucoup plus simple d'éliminer toutes ces formules et de mettre directement le résultat souhaité dans les cellules par vba
eric
ActiveSheet.Name = "Fiche de suivi n°0" & i
par :
ActiveSheet.Name = "Fiche de suivi n°" & right("0" & i,2)
ton n°sera toujours formaté sur 2 chiffres.
et sous cette ligne ajoute (?) :
[J71]= "Fiche de suivi n°" & right("0" & i,2)
pour remplacer ta formule.
Comme tu peux le constater, c'est un peu biscornu ^^
Mais non, c'est beaucoup biscornu. Je n'ai pas eu le courage de remonter les formules pour retrouver la chaine fabriquée...
C'est pourquoi je ne suis pas sûr de la modif en J71, et il faudra mettre un calculate.
Ca serait beaucoup plus simple d'éliminer toutes ces formules et de mettre directement le résultat souhaité dans les cellules par vba
eric
Je te remercie pour la simplification au niveau du nommage, ça m'a supprimé plein de lignes.
J'ai également suivi ton conseil et j'ai tout fait par VBA. Résultat : plus aucun problème d'actualisationet l'impression fonctionne sans problème.
Je te montre ce que ça donne maintenant. Si tu as encore des conseils pour améliorer cette partie, ils sont les bienvenus.
Private Sub Copie_Click()
Dim i, z, t
Dim x As Worksheet
z = Sheets("Tableau").Range("J2").Value
If (z And 1) Then
t = (z + 1) / 2
Else
t = z / 2
End If
For i = 1 To t
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°" & Right("0" & i, 2)
ActiveSheet.Range("H12").Value = Sheets("Tableau").Cells(2 * i, 1).Value
ActiveSheet.Range("Z12").Value = Sheets("Tableau").Cells(2 * i, 2).Value
ActiveSheet.Range("H16").Value = Sheets("Tableau").Cells(2 * i, 3).Value
ActiveSheet.Range("Z16").Value = Sheets("Tableau").Cells(2 * i, 4).Value
ActiveSheet.Range("J20").Value = Sheets("Tableau").Cells(2 * i, 5).Value
ActiveSheet.Range("BE12").Value = Sheets("Tableau").Cells(2 * i + 1, 1).Value
ActiveSheet.Range("BW12").Value = Sheets("Tableau").Cells(2 * i + 1, 2).Value
ActiveSheet.Range("BE16").Value = Sheets("Tableau").Cells(2 * i + 1, 3).Value
ActiveSheet.Range("BW16").Value = Sheets("Tableau").Cells(2 * i + 1, 4).Value
ActiveSheet.Range("BG20").Value = Sheets("Tableau").Cells(2 * i + 1, 5).Value
Calculate
Next i
End Sub
Encore merci.
Khanonji
J'ai également suivi ton conseil et j'ai tout fait par VBA. Résultat : plus aucun problème d'actualisationet l'impression fonctionne sans problème.
Je te montre ce que ça donne maintenant. Si tu as encore des conseils pour améliorer cette partie, ils sont les bienvenus.
Private Sub Copie_Click()
Dim i, z, t
Dim x As Worksheet
z = Sheets("Tableau").Range("J2").Value
If (z And 1) Then
t = (z + 1) / 2
Else
t = z / 2
End If
For i = 1 To t
Sheets("Fiche de suivi type 0").Copy Before:=Sheets("Fiche de suivi type 0")
ActiveSheet.Name = "Fiche de suivi n°" & Right("0" & i, 2)
ActiveSheet.Range("H12").Value = Sheets("Tableau").Cells(2 * i, 1).Value
ActiveSheet.Range("Z12").Value = Sheets("Tableau").Cells(2 * i, 2).Value
ActiveSheet.Range("H16").Value = Sheets("Tableau").Cells(2 * i, 3).Value
ActiveSheet.Range("Z16").Value = Sheets("Tableau").Cells(2 * i, 4).Value
ActiveSheet.Range("J20").Value = Sheets("Tableau").Cells(2 * i, 5).Value
ActiveSheet.Range("BE12").Value = Sheets("Tableau").Cells(2 * i + 1, 1).Value
ActiveSheet.Range("BW12").Value = Sheets("Tableau").Cells(2 * i + 1, 2).Value
ActiveSheet.Range("BE16").Value = Sheets("Tableau").Cells(2 * i + 1, 3).Value
ActiveSheet.Range("BW16").Value = Sheets("Tableau").Cells(2 * i + 1, 4).Value
ActiveSheet.Range("BG20").Value = Sheets("Tableau").Cells(2 * i + 1, 5).Value
Calculate
Next i
End Sub
Encore merci.
Khanonji
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
28 août 2010 à 10:59
28 août 2010 à 10:59
Bonjour,
Ben voilà, c'est beaucoup plus court ;-)
A part le calculate qui, je pense, n'est plus nécessaire je ne vois rien d'autre.
eric
Ben voilà, c'est beaucoup plus court ;-)
A part le calculate qui, je pense, n'est plus nécessaire je ne vois rien d'autre.
eric