VBA recopier un résultat dans plrs cellules
Résolu/Fermé
shouuu
-
12 févr. 2009 à 11:39
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 17 févr. 2009 à 08:34
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 17 févr. 2009 à 08:34
A voir également:
- VBA recopier un résultat dans plrs cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Lexer resultat - Télécharger - Sport
- Verrouiller cellules excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Resultat foot - Télécharger - Vie quotidienne
18 réponses
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
16 févr. 2009 à 15:59
16 févr. 2009 à 15:59
le fait d'écrire static gardera la variable en mémoire
dans toutes les macros que tu as transmises, il n'y a pas celles
ou tu renseignes client,produit,surface.
dans le module ou tu utilises (post1)
Sub Auto_Open()
static nbpièce as variant
static surface as variant
static épaisseur as variant
' j'ai utilise un type variant pour éviter un problème.
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
Range("G5").value =surface
.....
par ailleurs dans ton programme il y a plusieurs fois unload me ce qui implique
la perte des données du userform
je ne connais pas tout ton programme. le reste a l'air correct
fais un essai et tiens moi au courant.
dans toutes les macros que tu as transmises, il n'y a pas celles
ou tu renseignes client,produit,surface.
dans le module ou tu utilises (post1)
Sub Auto_Open()
static nbpièce as variant
static surface as variant
static épaisseur as variant
' j'ai utilise un type variant pour éviter un problème.
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
Range("G5").value =surface
.....
par ailleurs dans ton programme il y a plusieurs fois unload me ce qui implique
la perte des données du userform
je ne connais pas tout ton programme. le reste a l'air correct
fais un essai et tiens moi au courant.
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
12 févr. 2009 à 12:03
12 févr. 2009 à 12:03
Bonjour
puisque tu es débutante, je te propose d'écrire sur la cellule que tu désignes
pluto^t que d'aller activer la cellule avec select puis d'utiliser activecell
Sub Auto_Open()
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
Range("G5").value =surface
'ActiveCell = surface
Sheets("matières premières").Select
Range("F6").value =surface
'ActiveCell = surface
Range("L4").value=épaisseur
'ActiveCell = épaisseur
Sheets("infusion").Select
Range("G4").value=nbpièce
'ActiveCell = nbpièce
Si tu as besoin de plus tu dis...
A+
puisque tu es débutante, je te propose d'écrire sur la cellule que tu désignes
pluto^t que d'aller activer la cellule avec select puis d'utiliser activecell
Sub Auto_Open()
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
Range("G5").value =surface
'ActiveCell = surface
Sheets("matières premières").Select
Range("F6").value =surface
'ActiveCell = surface
Range("L4").value=épaisseur
'ActiveCell = épaisseur
Sheets("infusion").Select
Range("G4").value=nbpièce
'ActiveCell = nbpièce
Si tu as besoin de plus tu dis...
A+
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
12 févr. 2009 à 14:13
12 févr. 2009 à 14:13
bonjour,
oui pardon! je pensais que tu comprendrais.
un petit exemple.
Sub Auto_Open()
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
Range("G5").value =surface
' je vais écrire en G6,G7,G8 (Ici le G8 ne pose pas le problème lol )
Range("G6").value =surface
Range("G7").value =surface
Range("G8").value =surface
'maintenant sur la feuille 1 qui s'appelle Feuil1
'cela donne
Sheets("Feuil1").Range("G5").value =surface
En fait tu peux écrire ou tu veux il n'est pas nécessaire
de se déplacer sur la feuille pour y écrire.
il y a 2 moyens principaux pour écrire
1) utiliser Range("A6").value = valeurdeMaVariable
2) utiliser Cells(ligne,colonne).value = valeurdeMaVariable
pour A6 : Cells(6,1).value=valeurdeMaVariable
A+
oui pardon! je pensais que tu comprendrais.
un petit exemple.
Sub Auto_Open()
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
Range("G5").value =surface
' je vais écrire en G6,G7,G8 (Ici le G8 ne pose pas le problème lol )
Range("G6").value =surface
Range("G7").value =surface
Range("G8").value =surface
'maintenant sur la feuille 1 qui s'appelle Feuil1
'cela donne
Sheets("Feuil1").Range("G5").value =surface
En fait tu peux écrire ou tu veux il n'est pas nécessaire
de se déplacer sur la feuille pour y écrire.
il y a 2 moyens principaux pour écrire
1) utiliser Range("A6").value = valeurdeMaVariable
2) utiliser Cells(ligne,colonne).value = valeurdeMaVariable
pour A6 : Cells(6,1).value=valeurdeMaVariable
A+
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
12 févr. 2009 à 16:10
12 févr. 2009 à 16:10
en suivant ton exemple...
"par exemple Range"G5:G7;G16:G24".value=surface? "
Sub Auto_Open()
dim C as Variant
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
For Each C In Range("G5:G7,G16:G24")
C.Value = surface
Next
' Les deux plages sont rempli par la variable surface
A+
"par exemple Range"G5:G7;G16:G24".value=surface? "
Sub Auto_Open()
dim C as Variant
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
For Each C In Range("G5:G7,G16:G24")
C.Value = surface
Next
' Les deux plages sont rempli par la variable surface
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
16 févr. 2009 à 09:34
16 févr. 2009 à 09:34
bonjour,
tu as dis :"Par intéraction utilisateur"
c'est à dire l'utilisteur écrit directement dans la cellule..
Private Sub CommandButton1_Click()
Sheets("consommables").select
unload me ' cela décharge le userform et te rend la main
End Sub
Attention si tu souhaite réutiliser ton userform
il faudra utiliser .show et faire attention aux contenu des variables.
tu as dis :"Par intéraction utilisateur"
c'est à dire l'utilisteur écrit directement dans la cellule..
Private Sub CommandButton1_Click()
Sheets("consommables").select
unload me ' cela décharge le userform et te rend la main
End Sub
Attention si tu souhaite réutiliser ton userform
il faudra utiliser .show et faire attention aux contenu des variables.
parfait, je voudrais que lorsque je clique sur consommables , je puisse écrire dans cette feuille, ce qui et le cas, mais je voudrais aussi masquer certaines colonnes de ma feuille pour n'afficher que celles qui m'interessent , comment faire?
Et aussi, j'ai créé un bouton sur cette feuille " retour à l'interface", seulement les données que j'ai rentrées précédemment( dans des textbox de mon userform) se sont effacées, j'aimerais les conserver jusqu'à la fin de l'utilisation de l'interface où je clique sur ok.
Je ne sais pas si c'est très clair... ?
Et aussi, j'ai créé un bouton sur cette feuille " retour à l'interface", seulement les données que j'ai rentrées précédemment( dans des textbox de mon userform) se sont effacées, j'aimerais les conserver jusqu'à la fin de l'utilisation de l'interface où je clique sur ok.
Je ne sais pas si c'est très clair... ?
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
16 févr. 2009 à 14:26
16 févr. 2009 à 14:26
parfait, restons modeste.... imparfait comme les autres,
mais je voudrais aussi masquer certaines colonnes de ma feuille pour n'afficher que celles qui m'interessent , comment faire?
comme ça!
Columns("D:D").ColumnWidth = 0 'la colle D est masquée
Columns("D:D").ColumnWidth = 10 ' elle est à nouveau visible
Attention une colonne masquée reste accessible.
Et aussi, j'ai créé un bouton sur cette feuille " retour à l'interface", seulement les données que j'ai rentrées précédemment( dans des textbox de mon userform) se sont effacées, j'aimerais les conserver jusqu'à la fin de l'utilisation de l'interface où je clique sur ok.
Je ne sais pas si c'est très clair... ? mais si !
en fait ton code deviens...
Private Sub CommandButton1_Click()
Sheets("consommables").select
userform1.hide ' cela cache le userform et te donne accès à la feuille.
End Sub
dans un autre bouton sur la feuille, il te suffira d'écrire userform1.show.
attention pour que l'intégrité des variables soit respectée,
Ecrit dans la déclaration STATIC devant la variable
voici un exemple
Sub toto()
Static MaVariable As Double
Columns("D:D").ColumnWidth = 10
MaVariable = Val(InputBox("quelle valeur", "saisie"))
MaVariable = MaVariable * 2
UserForm1.TextBox1 = MaVariable
UserForm1.Show
End Sub
'*************************************
' le bouton pour retourner à la feuille
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub
'**************************************
et le retour
Sub retour_interface()
UserForm1.Show
End Sub
mais je voudrais aussi masquer certaines colonnes de ma feuille pour n'afficher que celles qui m'interessent , comment faire?
comme ça!
Columns("D:D").ColumnWidth = 0 'la colle D est masquée
Columns("D:D").ColumnWidth = 10 ' elle est à nouveau visible
Attention une colonne masquée reste accessible.
Et aussi, j'ai créé un bouton sur cette feuille " retour à l'interface", seulement les données que j'ai rentrées précédemment( dans des textbox de mon userform) se sont effacées, j'aimerais les conserver jusqu'à la fin de l'utilisation de l'interface où je clique sur ok.
Je ne sais pas si c'est très clair... ? mais si !
en fait ton code deviens...
Private Sub CommandButton1_Click()
Sheets("consommables").select
userform1.hide ' cela cache le userform et te donne accès à la feuille.
End Sub
dans un autre bouton sur la feuille, il te suffira d'écrire userform1.show.
attention pour que l'intégrité des variables soit respectée,
Ecrit dans la déclaration STATIC devant la variable
voici un exemple
Sub toto()
Static MaVariable As Double
Columns("D:D").ColumnWidth = 10
MaVariable = Val(InputBox("quelle valeur", "saisie"))
MaVariable = MaVariable * 2
UserForm1.TextBox1 = MaVariable
UserForm1.Show
End Sub
'*************************************
' le bouton pour retourner à la feuille
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub
'**************************************
et le retour
Sub retour_interface()
UserForm1.Show
End Sub
Alexsimps
Messages postés
199
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
6 novembre 2014
13
12 févr. 2009 à 11:41
12 févr. 2009 à 11:41
Salut,
Peux-tu mettre l'intégralité de ton code stp?
Je pense qu'il y a quelques lignes de plus qui peuvent nous être necessaire ^^
Peux-tu mettre l'intégralité de ton code stp?
Je pense qu'il y a quelques lignes de plus qui peuvent nous être necessaire ^^
shouuu
Messages postés
9
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
20 février 2009
12 févr. 2009 à 11:44
12 févr. 2009 à 11:44
Sub Auto_Open()
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
Range("G5").Select ActiveCell = surface
Sheets("matières premières").Select
Range("F6").Select
ActiveCell = surface
Range("L4").Select
ActiveCell = épaisseur
Sheets("infusion").Select
Range("G4").Select
ActiveCell = nbpièce
nbpièce = InputBox(" Combien de pièces identiques voulez vous?", "nb pièces", 1)
surface = InputBox(" Quelle est la surface de la pièce en m²?", "surface", 1)
épaisseur = InputBox("Quelle est l'épaisseur de la pièce?", "épaissseur", 1)
Sheets("consommables").Select
Range("G5").Select ActiveCell = surface
Sheets("matières premières").Select
Range("F6").Select
ActiveCell = surface
Range("L4").Select
ActiveCell = épaisseur
Sheets("infusion").Select
Range("G4").Select
ActiveCell = nbpièce
shouuu
Messages postés
9
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
20 février 2009
12 févr. 2009 à 13:49
12 févr. 2009 à 13:49
d'accord merci de ce conseil mais la question était donc que la valeur de ma surface s'écrive dans plusieurs cellules en meme temps...?
shouuu
Messages postés
9
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
20 février 2009
12 févr. 2009 à 14:31
12 févr. 2009 à 14:31
oui je suis grande débutante désolé !!! ça marche comme ca mais vu que j'en ai pas mal , je dois retaper à chaque fois "Range("G5").value =surface " ? il n'existe pas une combinaison qui permette de le faire en une ligne, par exemple Range"G5:G7;G16:G24".value=surface?
Je sais que celle la ne marche pas vu que je bloque depuis ce matin mais je me suis dit que j'avais peut etre mal tapé quelque chose ..
En même temps, tant que j'ai quelqu'un qui me répond, je voudrais savoir comment je peux faire pour que sur mon ecran apparaisse un rectangle où dedans on trouve deux boutons, consommables et l'autre matières premières et que lorsque l'on clique sur l'un ou l'autre, ma feuille excel ainsi nommée s'ouvre ?
Merci beaucoup
Je sais que celle la ne marche pas vu que je bloque depuis ce matin mais je me suis dit que j'avais peut etre mal tapé quelque chose ..
En même temps, tant que j'ai quelqu'un qui me répond, je voudrais savoir comment je peux faire pour que sur mon ecran apparaisse un rectangle où dedans on trouve deux boutons, consommables et l'autre matières premières et que lorsque l'on clique sur l'un ou l'autre, ma feuille excel ainsi nommée s'ouvre ?
Merci beaucoup
Alexsimps
Messages postés
199
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
6 novembre 2014
13
12 févr. 2009 à 14:53
12 févr. 2009 à 14:53
Pour tes variables, dans le pire des cas, tu peux faire une boucle vu que tu cherches a remplir des plages de cellules, cela sera plutôt simple^^
Tu peux avoir ton "rectangle" (appellé plutôt fenetre^^) en créant un objet form et il suffit d'y mettre 2 boutons qui feront appel a tes feuilles excel.
Voili Voilou ^^
Tu peux avoir ton "rectangle" (appellé plutôt fenetre^^) en créant un objet form et il suffit d'y mettre 2 boutons qui feront appel a tes feuilles excel.
Voili Voilou ^^
shouuu
Messages postés
9
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
20 février 2009
12 févr. 2009 à 16:26
12 févr. 2009 à 16:26
ok c'est bon pour ce problème merci,
maintenant je suis dans la suite où je voudrais que mon button me permette d'aller sur ma feuille excel pour pouvoir en modifier des données , pour le moment j'ai juste trouvé :
Private Sub CommandButton1_Click()
Sheets("consommables").Activate
End Sub
mais ca ne me permet ca d'écrire dedans!
Encore merci davance
maintenant je suis dans la suite où je voudrais que mon button me permette d'aller sur ma feuille excel pour pouvoir en modifier des données , pour le moment j'ai juste trouvé :
Private Sub CommandButton1_Click()
Sheets("consommables").Activate
End Sub
mais ca ne me permet ca d'écrire dedans!
Encore merci davance
Alexsimps
Messages postés
199
Date d'inscription
mercredi 4 février 2009
Statut
Membre
Dernière intervention
6 novembre 2014
13
12 févr. 2009 à 16:50
12 févr. 2009 à 16:50
Tu veux ecrire dedans par code ou par interaction utilisateur ?
Petit problème de compréhension !! pour la 2eme partie, donc pour garder mes données, je suis désolé mais pas assez compétente pr comprendre ce que tu as écrit !! Du coup je te copie mon programme ( pour savoir à quel moment il faut que je "sauvegarde mes variables", enfin que je les mette en STATIC si j'ai compris ?:s :
Private Sub consommables_Click()
Sheets("consommables").Activate
Columns("B").ColumnWidth = 0
Columns("D:F").ColumnWidth = 0
Columns("K:M").ColumnWidth = 0
Unload Me
End Sub
Private Sub matierespremieres_Click()
Sheets("matières premières").Activate
Unload Me
End Sub
Private Sub choix_Click()
End Sub
Private Sub client_Change()
Sheets("devis vierge").Select
Range("B3").Value = client
End Sub
Private Sub ok_Click()
Columns("B").ColumnWidth = 10
Columns("D:F").ColumnWidth = 10
Columns("K:M").ColumnWidth = 10
Dim Confirm As Single
Confirm = MsgBox("Voulez-vous une autre pièce?", vbYesNo + vbCritical, "répétition de la procédure")
If Confirm = vbNo Then
UserForm1.Hide
Sheets("devis vierge").Activate
Exit Sub
End If
End Sub
Private Sub cancel_Click()
Dim Confirm As Single
Confirm = MsgBox("Si vous annulez la procédure, vous perdrez toutes les données d'entrées." & "Etes-vous sûr de vouloir continuer?", vbYesNo + vbCritical, "abandon de la procédure")
If Confirm = vbYes Then
UserForm1.Hide
Exit Sub
End If
End Sub
Private Sub epaisseur_Change()
Sheets("matières premières").Select
Range("L4:L12").Value = epaisseur
End Sub
Private Sub nombre_Change()
Sheets("infusion").Select
Range("G4:G12").Value = nombre
End Sub
Private Sub produit_Change()
Sheets("devis vierge").Select
Range("B4").Value = produit
End Sub
Private Sub surface_Change()
Sheets("consommables").Select
Range("G5:G7").Value = surface
Range("G16:G24").Value = surface
Range("G29").Value = surface
Range("G30").Value = surface
Sheets("matières premières").Select
Range("F6:F12").Value = surface
End Sub
Mon userform est de la forme :
Client? ==> textbox
Produit? ==> text box
Surface... etc
Apres j'ai mes deux boutons "consommables" "matières premières"
Puis bouton annuler et OK
Les données que je veux pouvoir retrouver dans mon userform lorsque je reviens d'avoir écrit sur ma feuille consommables sont la surface, l'épaisseur etc, toutes mes textbox
Private Sub consommables_Click()
Sheets("consommables").Activate
Columns("B").ColumnWidth = 0
Columns("D:F").ColumnWidth = 0
Columns("K:M").ColumnWidth = 0
Unload Me
End Sub
Private Sub matierespremieres_Click()
Sheets("matières premières").Activate
Unload Me
End Sub
Private Sub choix_Click()
End Sub
Private Sub client_Change()
Sheets("devis vierge").Select
Range("B3").Value = client
End Sub
Private Sub ok_Click()
Columns("B").ColumnWidth = 10
Columns("D:F").ColumnWidth = 10
Columns("K:M").ColumnWidth = 10
Dim Confirm As Single
Confirm = MsgBox("Voulez-vous une autre pièce?", vbYesNo + vbCritical, "répétition de la procédure")
If Confirm = vbNo Then
UserForm1.Hide
Sheets("devis vierge").Activate
Exit Sub
End If
End Sub
Private Sub cancel_Click()
Dim Confirm As Single
Confirm = MsgBox("Si vous annulez la procédure, vous perdrez toutes les données d'entrées." & "Etes-vous sûr de vouloir continuer?", vbYesNo + vbCritical, "abandon de la procédure")
If Confirm = vbYes Then
UserForm1.Hide
Exit Sub
End If
End Sub
Private Sub epaisseur_Change()
Sheets("matières premières").Select
Range("L4:L12").Value = epaisseur
End Sub
Private Sub nombre_Change()
Sheets("infusion").Select
Range("G4:G12").Value = nombre
End Sub
Private Sub produit_Change()
Sheets("devis vierge").Select
Range("B4").Value = produit
End Sub
Private Sub surface_Change()
Sheets("consommables").Select
Range("G5:G7").Value = surface
Range("G16:G24").Value = surface
Range("G29").Value = surface
Range("G30").Value = surface
Sheets("matières premières").Select
Range("F6:F12").Value = surface
End Sub
Mon userform est de la forme :
Client? ==> textbox
Produit? ==> text box
Surface... etc
Apres j'ai mes deux boutons "consommables" "matières premières"
Puis bouton annuler et OK
Les données que je veux pouvoir retrouver dans mon userform lorsque je reviens d'avoir écrit sur ma feuille consommables sont la surface, l'épaisseur etc, toutes mes textbox
non ca ne marche pas, mais peut etre que c'est parce que mon bouton que j'ai créé sur ma feuille excel n'est pas relié à mon interface ?
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
17 févr. 2009 à 08:34
17 févr. 2009 à 08:34
bonjour,
pense à mettre en résolu et bon courage pour la suite.
A+
pense à mettre en résolu et bon courage pour la suite.
A+