Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion michal51
  • 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 !

michal51

XLDnaute Junior
Bonjour,

j'ai trouvé un code pour cocher des cases en faisant apparaitre un X.
Cela fonctionne très bien. j'ai la formule suivante:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim DerLig As Long, Lig As Long
DerLig = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Range("B:G"), Target) Is Nothing Then
If Target.Row >= 2 And Target.Row <= DerLig Then
Range("B" & Target.Row & ":G" & Target.Row).ClearContents
Target.Value = "X"
End If
End If
End Sub


Avec cette formule, je ne peux pas mettre plusieurs tableau l'un en dessous de l'autre. Je voudrais savoir comment faire pour pouvoir accumulé des tableau les uns en dessous des autres.

je pense que tout se passe là:
DerLig = Range("A" & Rows.Count).End(xlUp).Row

mais je ne sais pas résoudre le problème.

Merci pour votre aide

Michal
 
Dernière édition:
Re : code case X

Oui cela fonctionne en partie. En effet, le clic donnant une crois s'arrête au premier tableau.
Comment puis-je faire pour inscrire la même chose pour un autre tableau (situé en dessous).
Quand je rentre la meme formule pour un tableau situé en dessous, il trouve un bug.

Merci
 
Dernière édition:
Re : code case X

Re,

Je ne comprends toujours pas ton problème...
Si tu mets d'autres tableaux en dessous et que tu veux leur appliquer le même traitement pourquoi la version de base ne convient pas 😕

Cordialement
 
Re : code case X

Eh bien comme tu as pu le voir, j'ai entré le code dans l'onglet de la feuille (je ne sais pas comment faire autrement).
Si je laisse la meme formule, en changeant juste les cellule de début et de fin, j'obtient cela:
Private Sub Worksheet_SelectionChange1(ByVal Target As Range)
Dim DerLig As Long, Lig As Long
' Dernière ligne du tableau
DerLig = Range("A9").End(xlDown).Row
If Not Intersect(Range("B:F"), Target) Is Nothing Then
If Target.Row >= 9 And Target.Row <= DerLig Then
Range("B" & Target.Row & ":F" & Target.Row).ClearContents
Target.Value = "X"
End If
End If
End Sub


Si je ne change pas le nom initial, il y a un bug. Et comme ci-dessus çà ne fonctionne pas. Regarde dans l'ex.
 
Dernière édition:
Re : code case X

Re,

Ce n'est pas l'objet de ma question...
Il est difficile de répondre à une question quand on n'en connait pas la finalité, or là je ne vois vraiment pas ce que tu veux faire avec ton fichier😕😱

Cordialement
 
Re : code case X

Ah ok désolé.😕

Le but du fichier est de calculer le coût final. Ici ce n'est qu'une petite partie avec quelque exemple. Je compte ensuite mettre dans des case des conditions du type SI(B7=X;15;0) en faisant cela sur plusieurs case, j'obtiendrait un coût final de tous les achat de matériels.

J'ai essayé de le faire avec des checkbox, çà marche, le seul problème c'est que la quantité de checkbox est bcp trop grande et du coup çà rame énormément. J'ai donc opter pour ce système, que j'ai trouver sur le forum.

Voilà j'espère que tu as compris la finalité.
Sinon dis le et je mettrais un exemple un peu plus complet.
 
Re : code case X

Re,

Je pense avoir compris mais je n'ai pas de problème avec ta 1ère formulation...
Le seul risque qui existe c'est d'effacer la ligne des intitulés de tes tableaux. Pour y remédier il suffit de rajouter un test préliminaire qui met fin à la macro si une ligne d'intitulé est sélectionné.

Ou alors je ne me suis pas assez restauré et je manque de vitamine...
C'est vrai qu'avec seulement 50g de petits pois on va pas bien loin mais bon...

Cordialement
 
Re : code case X

Oui c'est biençà. Je pense que l'on parle de la même chose maintenant 😀. Malheuresement toujours pas de réponse. Je ne vois pas ce que tu veux dire avec la ligne test. (on inverse les rôle 😉).
En tout cas merci pour ton aide.

Bonne journée
 
Re : code case X

Re,
Pour des en têtes de tableau situées en ligne 1, 8, 14(Pour 3 tableaux) ajoute cette ligne juste après les déclarations de variables dans ton code
Code:
If InStr("1-8-14", Target.Row) <> 0 Then Exit Sub
c'est à dire :
Code:
  Dim DerLig As Long, Lig As Long
If InStr("1-8-14", Target.Row) <> 0 Then Exit Sub
DerLig = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Range("B:H"), Target) Is Nothing Then
Cordialement
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
1
Affichages
298
Réponses
8
Affichages
426
Réponses
7
Affichages
531
Réponses
4
Affichages
503
Réponses
16
Affichages
939
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…