code case X

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:

michal51

XLDnaute Junior
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:

michal51

XLDnaute Junior
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:

michal51

XLDnaute Junior
Re : code case X

Ah ok désolé.:confused:

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.
 

michal51

XLDnaute Junior
Re : code case X

Ok, cette fois dis moi si tu as compris;).

PS :je vais effacer les autres fichier pour ne pas encombrer le serveur.
 

Pièces jointes

  • Classeur1.xls
    27 KB · Affichages: 45
  • Classeur1.xls
    27 KB · Affichages: 52
  • Classeur1.xls
    27 KB · Affichages: 47

Spitnolan08

XLDnaute Barbatruc
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
 

michal51

XLDnaute Junior
Re : code case X

Oui c'est biençà. Je pense que l'on parle de la même chose maintenant :D. 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
 

Spitnolan08

XLDnaute Barbatruc
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
 

Statistiques des forums

Discussions
313 770
Messages
2 102 238
Membres
108 181
dernier inscrit
Chr1sD