Utilisation d'un boutton fonction sur excel
Résolu
nonoche2801
Messages postés
25
Date d'inscription
Statut
Membre
Dernière intervention
-
Bidouilleu_R Messages postés 1181 Date d'inscription Statut Membre Dernière intervention -
Bidouilleu_R Messages postés 1181 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Utilisation d'un boutton fonction sur excel
- Fonction si et excel - Guide
- Utilisation chromecast - Guide
- Liste déroulante excel - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Word et excel gratuit - Guide
3 réponses
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
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
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 .........
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 .........
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..
Au milieu tu ajoute..
Ensuite tu ajoute un module >> Insertion >> Module
Dans la nouvelle fenêtre tu colle le code ci-dessous
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+
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+