sélection de plages

Katoch

XLDnaute Junior
(Re) Bonjour,

quel code / modification à apporter à ce code pour ne le faire appliquer qu'à une sélection de plages ?
ex plages F15:F31;H15:H31;J15:JI31;L15:L31;etc...

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Target.Interior.ColorIndex = Cells(Target.Row, 1).Interior.ColorIndex
End Sub


merci par avance de votre coopération.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : sélection de plages

Bonsoir katoch, bonsoir le forum,

Etc... ça veut dire quoi ? On voit bien que tu veut à partir de la colonne F, un colonne sur deux des lignes 15 à 31 mais jusqu'où vas-tu ? Quelle est la dernière colonne ?
 

Katoch

XLDnaute Junior
Re : sélection de plages

Jusqu'à la colonne TF comprise,avec toujours cette alternance d'une colonne sur 2 jusqu'à TF.

Dans le fichier joint j'ai 2 questions pour lesquelles je n'ai rien trouvé dans le forum pour m'aider5compte tenu de mon niveau!).
Bref , je te sollicite , de nouveau.
merci, Robert !
 

Pièces jointes

  • Katoch_v01.xls
    39 KB · Affichages: 39
  • Katoch_v01.xls
    39 KB · Affichages: 40
  • Katoch_v01.xls
    39 KB · Affichages: 40

Robert

XLDnaute Barbatruc
Repose en paix
Re : sélection de plages

Bonsoir le fil, bonsoir le forum,

Ne disposant que d'une version Excel 2003 je n'ai pu tester le code ci-dessous et j'ai fait un rapide calcul pour la colonne maximale 525. Tu ajusteras si c'est pas ça. Pour vérifier tu rajoutes la ligne pl.Select à la fin de la boucle et tu vois si ça va bien jusqu'à TF.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim pl As Range
Dim x As Integer

Set pl = Range("F15:F31")
For x = 8 To 525 Step 2
    Set pl = Application.Union(pl, Range(Cells(15, x), Cells(31, x)))
Next x
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub
Cancel = True
Target.Interior.ColorIndex = Cells(Target.Row, 1).Interior.ColorIndex
End Sub
Pour l'aute fichier je regarde...
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : sélection de plages

Bonsoir le fil, bonsoir le forum,

Pas très clair tes questions...

Pour la première :
• Tu veux en B3 la somme des cellules rouges de la ligne 3 (colonnes C à H) ?
• Tu veux en B3 la somme des cellules rouges de la ligne 3 (toutes les colonne à partir de la colonnes C) ?
ou
• Tu veux en colonne B la somme des cellules de la ligne de la même couleur que la cellule en A ?
si oui :
• Restreindre à la plage C1:H29 ?
• de la colonne C à la dernière colonne de ta version d'excel sur toutes les lignes ?

Pour la seconde :
Que veut-tu dire par "remettre en état initial" ? Effacer le contenu et remettre la couleur Or ?

Besoin de plus de précisions pour te venir en aide...
 

Katoch

XLDnaute Junior
Re : sélection de plages

Yes !
Celà fonctionne , j'ai juste modifié (525 par 526 pour atteindre la colonne TF).
Incroyable , pour moi.
Je commençais à saisir manuellement les plages de cellules...
Bref, encore une fois je suis super content de ta solution , rapide.
merci.
 

Katoch

XLDnaute Junior
Re : sélection de plages (suite)

J'ai répondu aux questions , sur le fichier joint.
Merci par avance et me poser toute autre question éventuelle pouvant t'éclairer sur le but à atteindre !
Bien cordialement
 

Pièces jointes

  • Katoch_v01.xls
    46 KB · Affichages: 44
  • Katoch_v01.xls
    46 KB · Affichages: 46
  • Katoch_v01.xls
    46 KB · Affichages: 46

Staple1600

XLDnaute Barbatruc
Re : sélection de plages

Bonsoir


S'il s'agit de sélectionner une colonne sur deux, voici de quoi choisr les colonnes paires au impaires
Code:
Sub SelectionPAIRouIMPAIR(Plage$, PARITE As Byte)
Dim p As Range, i
For i = 1 To Range(Plage).Columns.Count
If Cells(1, i).Column Mod 2 = PARITE Then
    If p Is Nothing Then
        Set p = Cells(1, i)
    Else
        Set p = Union(p, Cells(1, i))
    End If
End If
Next
If Not p Is Nothing Then
p.EntireColumn.Select
End If
End Sub
VB:
Sub TestIMPAIR()
'SelectionPAIRouIMPAIR "A1:P1", 1 'test ok
SelectionPAIRouIMPAIR "F1:TF1", 1 ' à tester sur ton fichier
End Sub
VB:
Sub TestPAIR()
'SelectionPAIRouIMPAIR "A1:P1", 0 ' test ok
SelectionPAIRouIMPAIR "F1:TF1", 0 ' à tester sur ton fichier
End Sub

EDITION: J'aurai du ouvrir ta nouvelle pièce jointe avant de poster ces codes VBA.
Désolé
Néanmoins, je laisse le code , cela pourra peut-être servir à d'autres lecteurs de ce fil.
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : sélection de plages

Bonjour le fil, bonjour le forum,

Voici une nouvelle proposition mais il est très compliqué de redonner la couleur d'origine à une cellule sans avoir stocké au préalable cette couleur quelque part. Et je vois mal comment garder en mémoire la couleur de toutes les cellules colorées. Aussi le code que je te propose supprime la valeur et enlève la couleur...
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim cel As Range
Cancel = True 'annule le mode édition lié ua double-clic
'récupère la coleur de la cellule en collone A et la place dans la cellule double-cliquée
Target.Interior.ColorIndex = IIf(Target.Value = "", Cells(Target.Row, 1).Interior.ColorIndex, xlNone)
Target.Value = IIf(Target.Value = "", 1, "")
For Each cel In Application.Intersect(Columns(2), ActiveSheet.UsedRange)
    cel.Value = IIf(Application.WorksheetFunction.Sum(Range(Cells(cel.Row, 3), Cells(cel.Row, Application.Columns.Count))) = 0, _
        "", Application.WorksheetFunction.Sum(Range(Cells(cel.Row, 3), Cells(cel.Row, Application.Columns.Count))))
Next cel
End Sub
 

Katoch

XLDnaute Junior
Re : sélection de plages

Super ! Le code fonctionne du premier coup et me permet d'alléger mon tableur planning pour lequel je ne fonctionnais qu'avec des mises en forme conditionnelles. Du coup je gagne énormément en vitesse de calcul.
Je conserve une MFC pour rétablir la couleur de fond lorsque la cellule perd toute valeur.
Merci à toi Robert.
Merci aussi à Staple 1600 pour sa proposition , qui me servira dans un autre projet .
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS