Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
pas tout compris, de toute façon une feuille ne peut pas être masquée et être active en même temps... mais pas besoin de selectionner une feuille pour agir dessus par vba, regarde peut être le code ci-dessous si cela peut t'aider :
Code:
Sub Vider()
With Sheets("Feuil3")
.Range("A1:F1").ClearContents
End With
End Sub
merci pierrot93
mais cette feuille ne me sert que a placer des infos pour les cachers des autres feuiles.
elle me sont utile uniquement pour que les calcul puisse fonctionner seul elle ne me serve pas. je les place dans le feuille3 juste en relais pour la feuille2,c'est pour sa que j'aimerai cacher la feuille3. si quelqu'un a une idée je suis preneur.
Bonjour Claude,
Salut Pierrot, content de te croiser,
Comme Pierrot, je ne suis pas certain de bien cerner ta demande, alors pour faire avancer le schmilblick, je te propose la solution suivante :
Si la feuille 3 ne sert que "d'entrepôt caché" à des données temporairement utilisées pour des calculs, places ces données dans la mémoire d'Excel via des variables ou des tableaux de données déclarés en VBA. Plus besoin de feuille 3.
Et si tu souhaites bloquer l'accès à ces données, il suffit alors de verrouiller le projet.
Un exemple entièrement en VBA qui ne nécessite aucune formule (j'ai effacé les feuilles 2 et 3 dans ton fichier)
Tout est calculé en mémoire.
Pour la restitution des résultats, j'ai fais un mix avec un affichage par messages et j'ai terminé par une inscription "en dur" dans 3 cellules de la feuille 1.
A noter que j'ai programmé ces calculs d'après tes formules, parce qu'en fait, "Barbotine, Défloculents et Matière sèche" sont du chinois pour moi, et bien naturellement, je n'ai aucune idée de leur mode de calcul.
Code:
Private Sub CommandButton1_Click()
Dim V1 As Double, V2 As Double, V3 As Double, V4 As Double, V5 As Double, V6 As Double
Dim PoidsMatSeche As Double, Barbotine As Double, Défloculent As Double
On Error GoTo StopErr
V1 = InputBox("Matière sèche. Inscrire la valeur que tu aurais saisi en cellule E8 ")
V2 = InputBox("Matière sèche. Inscrire la valeur que tu aurais saisi en cellule G8 ")
V3 = InputBox("Matière sèche. Inscrire la valeur que tu aurais saisi en cellule F9 ")
PoidsMatSeche = (V1 * V2 * -10000) / (V3 * -1)
m1$ = "V1 = " & CStr(V1) & " -- V2 = " & CStr(V2) & " -- V3 = " & CStr(V3)
m1$ = m1$ & Chr(10) & Chr(10) & "Poids de matière sèche = " & Round(PoidsMatSeche, 2) & " gr"
MsgBox m1$, vbInformation, "Résultats"
V4 = InputBox("Barbotine. Inscrire la valeur que tu aurais saisi en cellule H14 ")
Barbotine = (V4 * 1000) / PoidsMatSeche
m1$ = m1$ & Chr(10) & Chr(10) & "V4 = " & CStr(V4)
m1$ = m1$ & Chr(10) & Chr(10) & "Barbotine = " & Round(Barbotine, 2) & " gr"
MsgBox m1$, vbInformation, "Résultats"
V5 = InputBox("Défloculent. Inscrire la valeur que tu aurais saisi en cellule H20 ")
V6 = InputBox("Défloculent. Inscrire la valeur que tu aurais saisi en cellule J20 ")
Défloculent = ((V5 * V6) / 1000) / 2
m1$ = m1$ & Chr(10) & Chr(10) & "V5 = " & CStr(V5) & " -- V6 = " & CStr(V6)
m1$ = m1$ & Chr(10) & Chr(10) & "Défloculents = " & Round(Défloculent, 2) & " gr"
MsgBox m1$, vbInformation, "Résultats"
'Inscription dans la feuille
With Sheets("Feuil1")
.Cells(9, 4) = Round(Barbotine, 2)
.Cells(17, 2) = " Le poids de matière sèche = " & Round(PoidsMatSeche, 2)
.Cells(18, 2) = "La valeur de défloculents = " & Round(Défloculent, 2)
End With
Exit Sub
StopErr:
Err.Clear
MsgBox "Une donnée erronée a été saisie, provoquant une erreur de calcul", vbCritical, "Erreur .."
End Sub
Je te joins ton fichier adapté à la sauce VBA. Cliques sur le bouton rouge et laisses toi guider.
Un exemple entièrement en VBA qui ne nécessite aucune formule (j'ai effacé les feuilles 2 et 3 dans ton fichier)
Tout est calculé en mémoire.
Pour la restitution des résultats, j'ai fais un mix avec un affichage par messages et j'ai terminé par une inscription "en dur" dans 3 cellules de la feuille 1.
A noter que j'ai programmé ces calculs d'après tes formules, parce qu'en fait, "Barbotine, Défloculents et Matière sèche" sont du chinois pour moi, et bien naturellement, je n'ai aucune idée de leur mode de calcul.
Code:
Private Sub CommandButton1_Click()
Dim V1 As Double, V2 As Double, V3 As Double, V4 As Double, V5 As Double, V6 As Double
Dim PoidsMatSeche As Double, Barbotine As Double, Défloculent As Double
On Error GoTo StopErr
V1 = InputBox("Matière sèche. Inscrire la valeur que tu aurais saisi en cellule E8 ")
V2 = InputBox("Matière sèche. Inscrire la valeur que tu aurais saisi en cellule G8 ")
V3 = InputBox("Matière sèche. Inscrire la valeur que tu aurais saisi en cellule F9 ")
PoidsMatSeche = (V1 * V2 * -10000) / (V3 * -1)
m1$ = "V1 = " & CStr(V1) & " -- V2 = " & CStr(V2) & " -- V3 = " & CStr(V3)
m1$ = m1$ & Chr(10) & Chr(10) & "Poids de matière sèche = " & Round(PoidsMatSeche, 2) & " gr"
MsgBox m1$, vbInformation, "Résultats"
V4 = InputBox("Barbotine. Inscrire la valeur que tu aurais saisi en cellule H14 ")
Barbotine = (V4 * 1000) / PoidsMatSeche
m1$ = m1$ & Chr(10) & Chr(10) & "V4 = " & CStr(V4)
m1$ = m1$ & Chr(10) & Chr(10) & "Barbotine = " & Round(Barbotine, 2) & " gr"
MsgBox m1$, vbInformation, "Résultats"
V5 = InputBox("Défloculent. Inscrire la valeur que tu aurais saisi en cellule H20 ")
V6 = InputBox("Défloculent. Inscrire la valeur que tu aurais saisi en cellule J20 ")
Défloculent = ((V5 * V6) / 1000) / 2
m1$ = m1$ & Chr(10) & Chr(10) & "V5 = " & CStr(V5) & " -- V6 = " & CStr(V6)
m1$ = m1$ & Chr(10) & Chr(10) & "Défloculents = " & Round(Défloculent, 2) & " gr"
MsgBox m1$, vbInformation, "Résultats"
'Inscription dans la feuille
With Sheets("Feuil1")
.Cells(9, 4) = Round(Barbotine, 2)
.Cells(17, 2) = " Le poids de matière sèche = " & Round(PoidsMatSeche, 2)
.Cells(18, 2) = "La valeur de défloculents = " & Round(Défloculent, 2)
End With
Exit Sub
StopErr:
Err.Clear
MsgBox "Une donnée erronée a été saisie, provoquant une erreur de calcul", vbCritical, "Erreur .."
End Sub
Je te joins ton fichier adapté à la sauce VBA. Cliques sur le bouton rouge et laisses toi guider.
Je ne suis pas certain de comprendre ta demande.
J'ai regardé ton fichier "Deflo original" et il me semble correct et utilisable.
Je crois comprendre, que ton fichier étant réalisé par un mix Formules/VBA (saisie en VBA et calcul via les formules), tu souhaites, comme dans mon exemple ci-dessus, avoir un mode de calcul tout VBA.
Si c'est le cas, signales le moi.
Par ailleurs, tu dis avoir des difficultés avec le point (.) dans les formules.
Là encore, je ne suis pas sûr de bien cerner ta demande :
S'agit-il du point utilisé comme virgule dans une donnée numérique
ou du point que j'utilise dans mon code VBA ?
Code:
With Sheets("Feuil1")
[b][color=red].[/b][/color]Cells(9, 4) = Round(Barbotine, 2)
[b][color=red].[/b][/color]Cells(17, 2) = " Le poids de matière sèche = " & Round(PoidsMatSeche, 2)
[b][color=red].[/b][/color]Cells(18, 2) = "La valeur de défloculents = " & Round(Défloculent, 2)
End With
Dans ce cas précis, le point évite d'écrire à chaque ligne Sheets("Feuil1"). C'est approximativement le principe du Contenant/Contenu, du Parent/Enfant.
On pourrait écrire
Sheets("Feuil1").Cells(1,1) = "A"
Sheets("Feuil1").Cells(2,1) ="B"
Sheets("Feuil1").Cells(3,1) = "C"
.....(qu'importe le nombre de lignes)
Sheets("Feuil1").Cells(26,1) = "Z"
ou
With Sheets("Feuil1")
.Cells(1,1) = "A"
.Cells(2,1) = "B"
.Cells(3,1) = "C"
.Cells(26,1) = "Z"
End With
Cette façon d'imbriquer le Contenu dans le Contenant est très utile pour éviter de répéter de nombreuses fois le Contenant.
Précises bien ta demande pour m'éviter le "hors sujet"
Pour ma culture perso, que sont la barbotine, le défloculent ?
dans la boite de dialogue qui s'affiche quand je click sur le bouton je ne peut pas rentrée les point dans les chiffres c'et a dire je suis obliger de taper 1492 au lieu de 1.492 et pareil pour 284 au lieu de 2.84.
quand je tape le point cela m'affiche le message d'erreur
Logique que tu te retrouves face à un message d'erreur dans la macro que je t'ai proposé :
Code:
.......
On Error GoTo StopErr
.......... les calculs......
StopErr:
Err.Clear
MsgBox "Une donnée erronée a été saisie, provoquant une erreur de calcul", vbCritical, "Erreur .."
..........
Le principe : à chaque erreur, le calcul est stoppé et la macro se poursuit dans le gestionnaire d'erreur StopErr qui nettoie le code erreur et affiche un message t'avisant de la saisie erronnée.
Pourquoi une erreur dans ta saisie ? tout simplement parce qu'en guise de séparateur, tu utilises le point à la place de la virgule (format US au lieu de format FR)
2 options principales :
. tu saisies tes données sous la forme 2,3456
. tu persistes à saisir des données au format 2.3456 en ayant au préalable modifié les paramètres régionaux de ton PC :
Panneau de configuration / Options régionales et linguistiques / paramètre régional = Anglais (Etats Unis) à la place de Français (France)
Les calculs s'effectueront sans problème avec le point.
Inconvénient : ce changement affecte la totalité de ton PC et pas uniquement le fichier concerné.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.