VBA recopier un résultat dans plrs cellules

Résolu
shouuu -  
Bidouilleu_R Messages postés 1209 Statut Membre -
Bonjour,

je suis débutante en VBA et travaille sur excel 2000. Je cherche à ce que mon résultat d'une inputbox se recopie dans plusieurs cellules. Je reussi seulement à l'afficher dans une cellule particulière(G5).Voici ce que j'ai écris pour le moment, je souhaiterais que le résultat s'affiche dans les cellules suivantes :G5,G6,G7,G16:G24;G29;G30

Sheets("consommables").Select
Range("G5").Select
ActiveCell = surface

Merci d'avance
Configuration: Windows 2000
Internet Explorer 6.0

18 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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.
    2
  2. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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+
    1
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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+
    1
  4. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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+
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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.
    1
    1. shouuu
       
      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... ?
      0
  7. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
    1
  8. Alexsimps Messages postés 215 Statut Membre 13
     
    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 ^^
    0
  9. shouuu Messages postés 10 Statut Membre
     
    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
    0
  10. shouuu Messages postés 10 Statut Membre
     
    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...?
    0
  11. shouuu Messages postés 10 Statut Membre
     
    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
    0
  12. Alexsimps Messages postés 215 Statut Membre 13
     
    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 ^^
    0
  13. shouuu Messages postés 10 Statut Membre
     
    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
    0
  14. Alexsimps Messages postés 215 Statut Membre 13
     
    Tu veux ecrire dedans par code ou par interaction utilisateur ?
    0
  15. shouuu
     
    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
    0
  16. shouuu
     
    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 ?
    0
  17. shouuu
     
    Si c'est bon j'ai réussi :)
    Merci beaucoup, je te re solliciterai peut etre par la suite !
    0
  18. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    bonjour,
    pense à mettre en résolu et bon courage pour la suite.
    A+
    0