Problème programmation VBA

  • Initiateur de la discussion Initiateur de la discussion ascarter
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

ascarter

Guest
Bonjour à tous,
Dans une liste, je choisis un type d'objet. En fonction de ce choix,des éléments apparaisent dans la colonne B à côté. Mon problème est que dans la colonne B, je veut mettre une case à cocher lorsqu'il y a du texte dans les cases. Et si il n'y a pas de texte, je ne veux pas de case à cocher. J'ai programmé quelque chose mais ce n'est pas tout à fait ce que je veux. Je pense qu'en regardant le fichier joint vous comprendrez mieux.
Merci d'avance pour vos réponses.
 

Pièces jointes

Re : Problème programmation VBA

Bonjour,

Avant For Each Cellule... mets :

Code:
Dim Forme As Object
On Error Resume Next
    For Each Forme In ActiveSheet.Shapes
        Forme.Cut
    Next Forme
On Error GoTo 0

C'est pour effacer les coches précédentes... (Actuellement, tu en as plusieurs les unes sur les autres...

Nota : Là, j'efface toutes les formes ; si tu en as d'un autre type, il faut, en plus, détecter que c'est bien une case à cocher.


Cordialement
 
Re : Problème programmation VBA

Comment détecter que c'est bien une case à cocher?
Car la maintenant sa m'efface le bouton qui me sert pour réinitialiser quand je change de moteur.
Merci pour ton aide.
 
Re : Problème programmation VBA

A la place de Forme.Cut, tu mets Msgbox Forme.Type et tu lances pour lire les différentes formes. Pour la tienne j'ai trouvé 8 alors ensuite, comme ceci :

Code:
Dim Forme As Object
On Error Resume Next
    For Each Forme In ActiveSheet.Shapes
        If Forme.Type = 8 Then
            Forme.Cut
        End If
    Next Forme
On Error GoTo 0

Peut-être que d'autres intervenants te donneront une autre solution...

Cordialement
 
Re : Problème programmation VBA

Pour info. le début de ton code serait plus simple ainsi :

Code:
'choix moteur
With Sheets("Inventaire").Range("B2:B200")
    Select Case Range("A3").Value
        Case "Moteur1a"
            .Value = Sheets("Données").Range("F2:F200").Value
        Case "Moteur1b"
            .Value = Sheets("Données").Range("G2:G200").Value
        Case "Moteur1c"
            .Value = Sheets("Données").Range("H2:H200").Value
        Case "Moteur1d"
            .Value = Sheets("Données").Range("I2:I200").Value
        Case "Moteur2b"
            .Value = Sheets("Données").Range("J2:J200").Value
        Case "Moteur2d"
            .Value = Sheets("Données").Range("K2:K200").Value
    End Select
End With

Cordialement
 
Re : Problème programmation VBA

Bonjour ascarter, Bonjour mecano 🙂,

Peut-être, pour se limiter aux cases à cocher :

Code:
For Each sh In ActiveSheet.Shapes
    If sh.Type = msoFormControl Then
        If sh.FormControlType = xlCheckBox Then
            sh.Delete
        End If
    End If
Next sh

Si tu venais à ajouter d'autres contrôles de la barre d'outils formulaire...
(msoFormControl = 8)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
635
W
Réponses
10
Affichages
411
Réponses
15
Affichages
469
Réponses
1
Affichages
232
Réponses
18
Affichages
1 K
Retour