Lancer une macro à partir d'une checkbox

charlyparis

XLDnaute Nouveau
Voilà le problème:

Au début, je lançais cette macro à partir d'une case d'option du menu formulaire qui marchait très bien mais je me suis rendu compte qu'ill fallait plutôt que j'utilise des cases à cocher (Checkbox du menu Contrôle!) pour ce travail.

Donc je voudrais qu'en cochant le case, ca lance ma macro qui copie des données d'un tableau sur une autre feuille. Avec la case d'option, ca marche normalement mais avec la checkbox, ca ne copie rien!
Aidez-moi, svp!
Bon bien sûr je suis débutant!
Merci d'avance pour votre aide.

Voilà le programme :

Private Sub CheckBox3_Click()

If CheckBox3.Value = True Then
Worksheets("SF SI").Select

Dim i
Dim j
Dim k
Dim NumeroLigne
Dim boucleur
Dim N
'Dim boucleurbis
i = 4

'Application.CutCopyMode = False
For j = 4 To 62
Worksheets("SF SI").Select
If Cells(j, 7).Value <> "" Then
Range(Cells(j, 1), Cells(j, 4)).Select
Selection.Copy
Worksheets("Vos Compétences SF SI").Select
If IsEmpty(Range("A4")) Then
Worksheets("Vos Compétences SF SI").Range("A" & i).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
i = i + 1

Else
Worksheets("Vos Compétences SF SI").Select
NumeroLigne = Worksheets("Vos Compétences SF SI").Range("A62").End(xlUp).Row + 1
Worksheets("Vos Compétences SF SI").Range("A" & NumeroLigne).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End If

End If

Next j

End If
End Sub
 
C

Compte Supprimé 979

Guest
Re : Lancer une macro à partir d'une checkbox

Bonjour Charlyparis et bienvenue sur ce forum ;)

J'ai regardé ton code,
si la procédure fontionne avec un "OptionButton"
il n'y a pas de raison que cela ne fonctionne pas avec le "CheckBox" :confused:

As-tu fait correctement ton copier/coller de la procédure ?

Meilleurs voeux pour cette nouvelle année
 

charlyparis

XLDnaute Nouveau
Re : Lancer une macro à partir d'une checkbox

Meilleurs voeux à toi aussi Bruno!

Bah, j'ai fait un simple copier-coller après le if checkbox3.value= True...

Cela ne copie toujours rien...

Bon restons optimistes...J'espère que ce n'est pas encore un mystère de VBA!

:(
 
Dernière édition:

ledzepfred

XLDnaute Impliqué
Re : Lancer une macro à partir d'une checkbox

bonsoir charlyparis, BrunoM45

bonne année à vous deux.

Pourrais-tu mettre ton fichier en pj de ton prochain post pour qu'on puisse voir ce qui se passe (le fichier zippé ne doit pas excéder 50ko donc limite-le à sa plus simple expression).

A+
 

charlyparis

XLDnaute Nouveau
Re : Lancer une macro à partir d'une checkbox

Le checkbox3 traite du métier n°= 3 dans l'onglet SF SI (Savoir-Faire Système d'information.


le problème est l'erreur 1004:
Range(Cells(j, 1), Cells(j, 4)).Select

alors que cette ligne marchait normalement avec une case d'option!

Merci encore pour votre aide :)
 

Pièces jointes

  • problemecharlyparis.zip
    47.7 KB · Affichages: 99
  • problemecharlyparis.zip
    47.7 KB · Affichages: 102
  • problemecharlyparis.zip
    47.7 KB · Affichages: 102

ledzepfred

XLDnaute Impliqué
Re : Lancer une macro à partir d'une checkbox

re...

ta case d'option déclenchait une procédure dans un module (sub), ton checkbox lui déclenche une procédure Private qui est liée au feuillet sur lequel est placé ton bouton. Dans les procédures private, il faut se méfer de la propriété Range qui bug si on ne lui dit pas les choses correctement.

Je regarderai ce soir (vers 23h) comment contourner le problème.

A+
 

ledzepfred

XLDnaute Impliqué
Re : Lancer une macro à partir d'une checkbox

re...

ci-joint fichier modifié, c'est une solution parmi tant d'autres

ai modifié le code comme ceci :
- suppression des variables inutiles, complément à la déclaration des variables (ecrire Dim i revient à ne rien écrire puisque par défaut elles sont déclarées en temps que Variant)
- allègement du code (on peut faire beaucoup plus court mais ai tenu à conserver l'esprit de ta macro)

Code:
Private Sub CheckBox3_Click()
Dim i, j, NumeroLigne As Integer
i = 4
If CheckBox3.Value = True Then
'Application.CutCopyMode = False
    For j = 4 To 62
    With Sheets("SF SI")
        If IsEmpty(.Cells(j, 7).Value) = False Then
        Application.ScreenUpdating = False
            If IsEmpty(Sheets("Vos Compétences SF SI").Cells(4, 1)) = True Then
                .Range("A" & j & ":D" & j).Copy Sheets("Vos Compétences SF SI").Range("A" & i)
                i = i + 1
            Else: NumeroLigne = Sheets("Vos Compétences SF SI").Range("A62").End(xlUp).Row + 1
                .Range("A" & j & ":D" & j).Copy Sheets("Vos Compétences SF SI").Range("A" & NumeroLigne)
            End If
        End If
    End With
    Next j
End If
End Sub

entre nous tu peux te contenter de ce code ci-dessous (la condition vérifiant si la cellule A4 de compétences SF SI est vide me semble inutile)
mais c'est à toi de voir :

Code:
Private Sub CheckBox3_Click()
Dim j, NumeroLigne As Integer
If CheckBox3.Value = True Then
'Application.CutCopyMode = False
    For j = 4 To 62
    With Sheets("SF SI")
        If IsEmpty(.Cells(j, 7).Value) = False Then
        Application.ScreenUpdating = False
        NumeroLigne = Sheets("Vos Compétences SF SI").Range("A62").End(xlUp).Row + 1
        .Range("A" & j & ":D" & j).Copy Sheets("Vos Compétences SF SI").Range("A" & NumeroLigne)
        End If
    End With
    Next j
End If
End Sub

en esperant que cela te convienne

a+
 

Pièces jointes

  • problemecharlyparis.zip
    34.6 KB · Affichages: 103
  • problemecharlyparis.zip
    34.6 KB · Affichages: 114
  • problemecharlyparis.zip
    34.6 KB · Affichages: 121

charlyparis

XLDnaute Nouveau
Re : Lancer une macro à partir d'une checkbox

Cela marche parfaitement bien! Grand merci Ledzepfred!

Maintenant, je vais rajouter deux autres cases à cocher avec ta même correction de la macro! J'ai aussi créé deux autres parties dans la macro que je vais rajouter : une partie qui supprime les doublons de lignes et une autre qui les trie automatiquement pour que ce soit nickel.

Faut-il que je créée un autre fil ou je peux mettre la suite du programme ici?
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz