Utilisation d'un boutton fonction sur excel

Résolu/Fermé
nonoche2801 Messages postés 25 Date d'inscription lundi 28 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 - 1 juil. 2010 à 13:51
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 2 juil. 2010 à 10:56
Bonjour,
je suis novice sur excel et j'aimerai pouvoir créer un bouton qui lance les lignes de programmes ci-dessous que j'ai récupéré sur internet et modifié.
Cependant lorsque que je clicke j'ai une erreur qui apparait et je n'arrive pas à la comprendre.
Voici le programme:
Public Sub Main()

Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
ReportMensuel

Set ws1 = Nothing
Set ws2 = Nothing

End Sub

Public Sub ReportMensuel()
Dim derlig As Long
Dim lig As Long

lig = 2
derlig = ws1.Range("A65536").End(xlUp).Row
While ws2.Range("A" & lig).Value <> ""
derlig = derlig + 1
ws1.Range("C" & derlig).Value = ws2.Range("A" & lig).Value
lig = lig + 1
Wend

lig = 2
derlig = ws1.Range("A65536").End(xlUp).Row
While ws2.Range("B" & lig).Value <> ""
derlig = derlig + 1
ws1.Range("F" & derlig).Value = ws2.Range("B" & lig).Value
lig = lig + 1
Wend
End Sub

Le nom de la focntion est Report mensuel().
Si quelqu'un voit l'erreur ou les erreurs merci d'avance.
Si il vous faut plus de renseignements pas de soucis.
Bonne journée.



A voir également:

3 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
1 juil. 2010 à 15:37
en début du module à l'extérieure de la sub
déclare tes variables... ;-)

ce qui donne....



Public ws1 As Worksheet
Public ws2 As Worksheet

Public Sub Main()

Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
ReportMensuel

Set ws1 = Nothing
Set ws2 = Nothing

End Sub
0
nonoche2801 Messages postés 25 Date d'inscription lundi 28 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
1 juil. 2010 à 17:12
j'ai essayé et ça change rien.
Le nouveau code donne dans le module 1:


Public ws1 As Worksheet
Public ws2 As Worksheet

Public Sub Main()

Set ws1 = Worksheets(1)
Set ws2 = Worksheets(2)
ReportMensuel

Set ws1 = Nothing
Set ws2 = Nothing

End Sub

Public Sub ReportMensuel()
Dim derlig As Long
Dim lig As Long

lig = 2
derlig = ws1.Range("A65536").End(xlUp).Row
While ws2.Range("A" & lig).Value <> ""
derlig = derlig + 1
ws1.Range("C" & derlig).Value = ws2.Range("A" & lig).Value
lig = lig + 1
Wend

lig = 2
derlig = ws1.Range("A65536").End(xlUp).Row
While ws2.Range("B" & lig).Value <> ""
derlig = derlig + 1
ws1.Range("F" & derlig).Value = ws2.Range("B" & lig).Value
lig = lig + 1
Wend
End Sub

et cela ne fonctionne toujours pas je sais plus quoi faire je me décourage un peu.
on peut éventuellement faire autrement mais je sais comment .
En fait je veux que quand je clique sur un bouton. Des cellules se remplie en fonction des éléments rentré sur une autre feuille.



HELP ME .........
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
2 juil. 2010 à 08:44
Quelle est ton erreur ? donne le numéro et le message s'il te plait.
Comment s'appelle tes feuilles? as-tu essayé de l'écrire en "dur" à savoir
sheets("feuil1").... par exemple?
quel est ton niveau en vba ?
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 juil. 2010 à 10:32
Bonjour tous,
Dans ton poste tu parle de mettre un bouton mais je vois que tu met le départ dans une sub ?
L'erreur c'est que tu ne décalre pas les variables Wk1 et 2, et comme tu n'a pas mis l'option explicit en haut du module rien ne t'est signaler quand aux déclarations.
Prend l'habitude de coller Option Explicit sur la première ligne de tes modules quel qu'il soit. Ce sera déjà une bonne série d'erreur qui te seront directement signalée.
Pour en revenir à ton code.
Sur la feuille où tu veux faire appel de la fonction tu colle un bouton tirer de la barre d'outils (pas formulaire)
Dés qu'il est coller tu double clic dessus pour entrer dans le code.
Tu devrais avoir quelque chose comme..
Private Sub CommandButton1_Click()
   
End Sub

Au milieu tu ajoute..
Private Sub CommandButton1_Click()
    ReportMensuel
End Sub

Ensuite tu ajoute un module >> Insertion >> Module
Dans la nouvelle fenêtre tu colle le code ci-dessous
Option Explicit
Public ws1 As Worksheet
Public ws2 As Worksheet



Public Sub ReportMensuel()
Dim derlig As Long
Dim lig As Long

    Set ws1 = Worksheets(1)
    Set ws2 = Worksheets(2)
    
    lig = 2
    derlig = ws1.Range("A65536").End(xlUp).Row
    While ws2.Range("A" & lig).Value <> ""
        derlig = derlig + 1
        ws1.Range("C" & derlig).Value = ws2.Range("A" & lig).Value
        lig = lig + 1
    Wend
    
    lig = 2
    derlig = ws1.Range("A65536").End(xlUp).Row
    While ws2.Range("B" & lig).Value <> ""
        derlig = derlig + 1
        ws1.Range("F" & derlig).Value = ws2.Range("B" & lig).Value
        lig = lig + 1
    Wend
    Set ws1 = Nothing
    Set ws2 = Nothing
End Sub

Ca devrait fonctionner.
Note que dans le cas présent il n'est pas du tout nécessaire d'employer des variables objets pour remplacer tes feuilles.

A+
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
2 juil. 2010 à 10:56
Et je dirais même mieux ..."Ca devrait fonctionner. " ;-)
0