Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modifier une sélection

14 réponses
Avatar
Michel
Bonjour à tout le monde,

Voici ma petite question :

est-il possible de modifier une sélection de plage à volonté. J'ai écrit
ceci :

Range("A4:L34,A39:L98,A104:L111,A116:L136,A141:L167,A172:L174,A179:L181,A186
:L188"). _
Select

Lorsque que j'insère ou supprime des lignes dans cette sélection, je
voudrais que cela soit mis à jour dans ce code automatiquement. (Peut-être
avec des variables?)

Merci à tout le monde

--
Michel TAF

10 réponses

1 2
Avatar
Michel
Bonjour Michdenis,

J'ai bien compris et merci pour ta réponse.

Mais sachant que les colonnes sont identiques, ne peut-on pas utiliser des
varibles pour les lignes.
Comme point de repère une cellule qui contient "TOTAUX", j'affecte le n° de
ligne à une variable et je me place sur la ligne juste au dessus.

Mon code devient :
Range("A4:L"&variable1&",A39:L"&variable2&",A104:L"&variable3&",A116:L"&vari
able3&"etc..
:L188"). _
Select

Est ce possible?


exemple
"MichDenis" a écrit dans le message de
news:
Désolé pour toi, mais il n'existe pas de façon simple de redéfinir un


range
"automatiquement" suite à une suppression d'une ou plusieurs lignes de ce
range. Il faut recréer l'ensemble tel que tu le fais à chaque fois... et


ce n'est
pas du gâteau !

Ta façon de définir un range(....) ne peut pas comporter un string plus de
255 caractères.





"Michel" a écrit dans le message de news:


g4fu8a$te0$
Bonjour à tout le monde,

Voici ma petite question :

est-il possible de modifier une sélection de plage à volonté. J'ai écrit
ceci :




Range("A4:L34,A39:L98,A104:L111,A116:L136,A141:L167,A172:L174,A179:L181,A186
:L188"). _
Select

Lorsque que j'insère ou supprime des lignes dans cette sélection, je
voudrais que cela soit mis à jour dans ce code automatiquement. (Peut-être
avec des variables?)

Merci à tout le monde

--
Michel TAF




Avatar
FFO
Salut Michel

Une solution peut être pas très élégante mais efficace consiste à baliser
tes zones de sélection par un caractère

J’ai utilisé la colonne A et le chiffre 1 comme balise avec ce code :

Columns("A:A").Find(What:="1", After:=Range("A1"), LookIn:=xlFormulas,
LookAt _
:=xlPart).Activate
A = ActiveCell.Row
Départ = ActiveCell.Address
Lettre = "A"
Séparateur = ":"
For i = 1 To Range("A65535").End(xlUp).Row
Chaine = Chaine & Lettre & ActiveCell.Row & Séparateur
If Lettre = "A" Then
Lettre = "L"
Séparateur = ","
Else
Lettre = "A"
Séparateur = ":"
End If
Columns("A:A").FindNext(After:¬tiveCell).Activate
If ActiveCell.Address = Départ Then
Exit For
End If
Next
Range(Mid(Chaine, 1, Len(Chaine) - 1)).Select

Tu peux ainsi rajouter autant de lignes que tu souhaites la sélection se
fera en fonction des balises sur la colonne A et L

On peux changer les colonnes prises dans la sélection (ici A et L), la
colonne portant les balises et le caractére utilisé (ici 1)

Sur ce lien un exemple que tu peux tester

http://www.cijoint.fr/cjlink.php?file=cj200807/cijUQMCZYf.xls

Fais des essais et dis moi !!!!


"Michel" wrote:

Bonjour à tout le monde,

Voici ma petite question :

est-il possible de modifier une sélection de plage à volonté. J'ai écrit
ceci :

Range("A4:L34,A39:L98,A104:L111,A116:L136,A141:L167,A172:L174,A179:L181,A186
:L188"). _
Select

Lorsque que j'insère ou supprime des lignes dans cette sélection, je
voudrais que cela soit mis à jour dans ce code automatiquement. (Peut-être
avec des variables?)

Merci à tout le monde

--
Michel TAF





Avatar
Michel
Merci mille fois, cela fontctione du tonnerre.

Je vais être exigent, si dans ces plages ainsi sélectionnées, il existe des
lignes vides et que je veuille les masquer, quel code dois je rajouter?

Merci encore

Michel

"FFO" a écrit dans le message de
news:
Salut Michel

Une solution peut être pas très élégante mais efficace consiste à baliser
tes zones de sélection par un caractère

J'ai utilisé la colonne A et le chiffre 1 comme balise avec ce code :

Columns("A:A").Find(What:="1", After:=Range("A1"), LookIn:=xlFormulas,
LookAt _
:=xlPart).Activate
A = ActiveCell.Row
Départ = ActiveCell.Address
Lettre = "A"
Séparateur = ":"
For i = 1 To Range("A65535").End(xlUp).Row
Chaine = Chaine & Lettre & ActiveCell.Row & Séparateur
If Lettre = "A" Then
Lettre = "L"
Séparateur = ","
Else
Lettre = "A"
Séparateur = ":"
End If
Columns("A:A").FindNext(After:¬tiveCell).Activate
If ActiveCell.Address = Départ Then
Exit For
End If
Next
Range(Mid(Chaine, 1, Len(Chaine) - 1)).Select

Tu peux ainsi rajouter autant de lignes que tu souhaites la sélection se
fera en fonction des balises sur la colonne A et L

On peux changer les colonnes prises dans la sélection (ici A et L), la
colonne portant les balises et le caractére utilisé (ici 1)

Sur ce lien un exemple que tu peux tester

http://www.cijoint.fr/cjlink.php?file=cj200807/cijUQMCZYf.xls

Fais des essais et dis moi !!!!


"Michel" wrote:

> Bonjour à tout le monde,
>
> Voici ma petite question :
>
> est-il possible de modifier une sélection de plage à volonté. J'ai écrit
> ceci :
>
>


Range("A4:L34,A39:L98,A104:L111,A116:L136,A141:L167,A172:L174,A179:L181,A186
> :L188"). _
> Select
>
> Lorsque que j'insère ou supprime des lignes dans cette sélection, je
> voudrais que cela soit mis à jour dans ce code automatiquement.


(Peut-être
> avec des variables?)
>
> Merci à tout le monde
>
> --
> Michel TAF
>
>
>


Avatar
Fredo P
il suffit de nommer la plage (par ex:"Selec")
Et pour contrôler le résultat dans le code de la feuille après avoir inséré
ou supprimé une ligne ou et une cellule

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
[A2] = Range("selec").Address
Range("selec").Select
End Sub
"Michel" a écrit dans le message de news:
g4fu8a$te0$
Bonjour à tout le monde,

Voici ma petite question :

est-il possible de modifier une sélection de plage à volonté. J'ai écrit
ceci :

Range("A4:L34,A39:L98,A104:L111,A116:L136,A141:L167,A172:L174,A179:L181,A186
:L188"). _
Select

Lorsque que j'insère ou supprime des lignes dans cette sélection, je
voudrais que cela soit mis à jour dans ce code automatiquement. (Peut-être
avec des variables?)

Merci à tout le monde

--
Michel TAF




Avatar
FFO
Rebonjour Michel
Heureux que celà te convienne

Je te propose cette version améliorée intégrant ta dernière demande masquant
les ligne vide de la sélection :

Colonne1 = "A"
Colonne2 = "L"
Balise = "1"
Colonne3 = "A"
Lettre = Colonne1
Columns(Colonne3 & ":" & Colonne3).Find(What:ºlise, After:=Range("A1"),
LookIn:=xlFormulas, LookAt _
:=xlPart).Activate
A = ActiveCell.Row
Départ = ActiveCell.Address
Séparateur = ":"
For i = 1 To Range("A65535").End(xlUp).Row
Chaine1 = Chaine1 & Lettre & ActiveCell.Row & Séparateur
Chaine2 = Chaine2 & "A" & ActiveCell.Row & Séparateur
If Séparateur = ":" Then
Lettre = Colonne2
Séparateur = ","
Else
Lettre = Colonne1
Séparateur = ":"
End If
Columns(Colonne3 & ":" & Colonne3).FindNext(After:¬tiveCell).Activate
If ActiveCell.Address = Départ Then
Exit For
End If
Next
Range(Mid(Chaine2, 1, Len(Chaine2) - 1)).Select
Selection.Find(What:="", After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart).Activate
Départ = ActiveCell.Address
For j = 1 To Range("A65535").End(xlUp).Row
If Range("A" & ActiveCell.Row).End(xlToRight).Address = Range("IV" &
ActiveCell.Row).Address And Range("A" & ActiveCell.Row) = "" And Range("IV" &
ActiveCell.Row) = "" Then
ActiveCell.EntireRow.Hidden = True
End If
Selection.FindNext(After:¬tiveCell).Activate
If ActiveCell.Address = Départ Then
Exit For
End If
Next
Range(Mid(Chaine1, 1, Len(Chaine1) - 1)).Select

Je t'ai mis en début de code les variables à actualiser en fonction de tes
contraintes :

Colonne1 et Colonne2 les colonnes entrant dans la sélection souhaitée
Colonne3 la colonne où tu souhaites mettre la balise
Balise le caractère que tu souhaites utilisé

Sur ce lien un exemple que tu peux tester :

http://www.cijoint.fr/cjlink.php?file=cj200807/cij1FqURdZ.xls

Fais des essais et dis moi !!!!
Avatar
Michel
Re bonjour,

Le masquage des lignes ne fonctionne pas(Enfin il fonctionne dans ton
exemple, mais quande je l'intègre dans mon projet il ne fonctionne plus).

Simplement j'ai remplacé Colonne3 par "M" au lieu de "A" et j'ai pris soins
de changer le début de la recherche After=("M1") au lieu de Range("A1").
Autre précision : entre mes balises 1, les cellules sont vides, je n'ai pas
de A comme tu l'as mis dans ton exemple. De plus le code me dit qu'il un
boque en sur lignant en jaune ceci : Selection.Find(What:="",
After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart).Activate

Merci encore


"FFO" a écrit dans le message de
news:
Rebonjour Michel
Heureux que celà te convienne

Je te propose cette version améliorée intégrant ta dernière demande


masquant
les ligne vide de la sélection :

Colonne1 = "A"
Colonne2 = "L"
Balise = "1"
Colonne3 = "A"
Lettre = Colonne1
Columns(Colonne3 & ":" & Colonne3).Find(What:ºlise, After:=Range("A1"),
LookIn:=xlFormulas, LookAt _
:=xlPart).Activate
A = ActiveCell.Row
Départ = ActiveCell.Address
Séparateur = ":"
For i = 1 To Range("A65535").End(xlUp).Row
Chaine1 = Chaine1 & Lettre & ActiveCell.Row & Séparateur
Chaine2 = Chaine2 & "A" & ActiveCell.Row & Séparateur
If Séparateur = ":" Then
Lettre = Colonne2
Séparateur = ","
Else
Lettre = Colonne1
Séparateur = ":"
End If
Columns(Colonne3 & ":" & Colonne3).FindNext(After:¬tiveCell).Activate
If ActiveCell.Address = Départ Then
Exit For
End If
Next
Range(Mid(Chaine2, 1, Len(Chaine2) - 1)).Select
Selection.Find(What:="", After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart).Activate
Départ = ActiveCell.Address
For j = 1 To Range("A65535").End(xlUp).Row
If Range("A" & ActiveCell.Row).End(xlToRight).Address = Range("IV" &
ActiveCell.Row).Address And Range("A" & ActiveCell.Row) = "" And


Range("IV" &
ActiveCell.Row) = "" Then
ActiveCell.EntireRow.Hidden = True
End If
Selection.FindNext(After:¬tiveCell).Activate
If ActiveCell.Address = Départ Then
Exit For
End If
Next
Range(Mid(Chaine1, 1, Len(Chaine1) - 1)).Select

Je t'ai mis en début de code les variables à actualiser en fonction de tes
contraintes :

Colonne1 et Colonne2 les colonnes entrant dans la sélection souhaitée
Colonne3 la colonne où tu souhaites mettre la balise
Balise le caractère que tu souhaites utilisé

Sur ce lien un exemple que tu peux tester :

http://www.cijoint.fr/cjlink.php?file=cj200807/cij1FqURdZ.xls

Fais des essais et dis moi !!!!




Avatar
FFO
Rebonjours Michel
Un peu surbooké je te réponds tardivement
Tout dabords je ferais les essais par étape
J'essairais le code sans changer les paramètres tel que je te l'ai proposé
Pour celà tu inséres dans ton projet un colonne en tout début qui deviendra
la colonne A et je mettrais les balises
Si le test est concluant je suprimerais cette colonne et reporterais les
balises colonne M

Effectivement et honte à moi j'ai oublié de reporter la Variable Colonne3
sur ces lignes de codes :

After:=Range("A1")

Remplaces par :

After:=Range(Colonne3 & "1")

For i = 1 To Range("A65535").End(xlUp).Row

Remplaces par

For i = 1 To Range(Colonne3 "65535").End(xlUp).Row


For j = 1 To Range("A65535").End(xlUp).Row

Remplace par

For j = 1 To Range(Colonne "65535").End(xlUp).Row

Sur ce lien mon exemple avec la colonne M utilisée pour les Balises et avec
les corrections ci-dessus

Fais des test

http://www.cijoint.fr/cjlink.php?file=cj200807/cij1FgqObw.xls.

Si tu as des difficultés peux tu me transmettre ton projet ou une partie sur
ce lien :

http://www.cijoint.fr/index.php

Communiques moi le lien pour le récupérer

Tiens moi informé !!!!!
Avatar
FFO
Rebonjours Michel

En relisant je m'aperçoit d'une bévue sur ces 2 corrections :

For i = 1 To Range(Colonne3 "65535").End(xlUp).Row
For j = 1 To Range(Colonne "65535").End(xlUp).Row

j'ai oublié le "&" il faut mettre :

For i = 1 To Range(Colonne3 & "65535").End(xlUp).Row
For j = 1 To Range(Colonne3 & "65535").End(xlUp).Row

La fatigue du soir peut être

Encore mille excuses !!!!
Avatar
Michel TAF
Le code se bloque toujours sur : Selection.Find(What:="",
After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart).Activate
en le surlignant en jaune?
avec le message suivant : erreur d'exécution '91' : variable objet ou
variable de bloc with non définie. il propose,comme action : fin, débogage,
Aide

Sur mon précédent message je disais ceci :
Autre précision : entre mes balises 1 en colonne M, les cellules sont vides,
je n'ai pas
de A comme tu l'as mis dans ton exemple. De plus le code me dit qu'il un
boque en sur lignant en jaune ceci : Selection.Find(What:="",
After:¬tiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart).Activate

Est ce l'explication ne viendrait pas de cela

Michel

"FFO" a écrit dans le message de
news:
Rebonjours Michel

En relisant je m'aperçoit d'une bévue sur ces 2 corrections :

For i = 1 To Range(Colonne3 "65535").End(xlUp).Row
For j = 1 To Range(Colonne "65535").End(xlUp).Row

j'ai oublié le "&" il faut mettre :

For i = 1 To Range(Colonne3 & "65535").End(xlUp).Row
For j = 1 To Range(Colonne3 & "65535").End(xlUp).Row

La fatigue du soir peut être

Encore mille excuses !!!!




Avatar
Michel TAF
Rebonjour François,

Ce que je ne t'ai pas dis c'est que dans mon projet, dans les lignes qui se
trouvent entre chaque balise 1,
Certaines lignes sont vides mais elles contiennent une formule qui ramène la
valeur "". Alors est ce que la cellule est vide ou non vide dans ces
conditions.
En tout cas j'aimerais masquer la ligne si chaque cellule contenu dedans
ramène un résultat nul c'est à dire ""; Exemple d'une formule =SI('Juillet 2008'!$G17="";SI('Juillet 2008'!D17="";"";'Juillet
2008'!D17);"")

Désolé pour cette précision qui manquait.

Est ce que le fait que les lignes ne se masquent pas dans mon projet
viendrait de là?

Merci et à plus tard

"FFO" a écrit dans le message de
news:
Rebonjours Michel

En relisant je m'aperçoit d'une bévue sur ces 2 corrections :

For i = 1 To Range(Colonne3 "65535").End(xlUp).Row
For j = 1 To Range(Colonne "65535").End(xlUp).Row

j'ai oublié le "&" il faut mettre :

For i = 1 To Range(Colonne3 & "65535").End(xlUp).Row
For j = 1 To Range(Colonne3 & "65535").End(xlUp).Row

La fatigue du soir peut être

Encore mille excuses !!!!




1 2