Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

sélection de plages

  • Initiateur de la discussion Initiateur de la discussion Katoch
  • 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 !

K

Katoch

Guest
(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.
 
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 ?
 
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

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...
 
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...
 
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.
 
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:
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
 
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 .
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…