OVH Cloud OVH Cloud

Rappel mémoire

6 réponses
Avatar
Richard Martin
Bonjour à tous et toutes.

J'ai utilisé ce code il y a un bout de temps et je ne me rappelle plus
exactement la signification. Je voulais définir un champs pour le coller
ailleurs mais je veux recomprendre cette partie de code comme il le faut.
J'ai fait un filtre automatique et RgLi est le champ résultat du filtre.

***************
Set RgLi1 = RgLi.Offset(1).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 13).SpecialCells(xlCellTypeVisible)
''' Début, fin, l'équipement et jours
Set RgEq1 = RgLi.Offset(1, 8).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 11).SpecialCells(xlCellTypeVisible)
**************

En particulier ou il y a le (1,8). Quelqu'un peut me résumer ce code
ci-dessus s.v.p. ?

Je sais que je voulais la partie de gauche dans RgLi1 et la partie de droite
dans RgEq1.
Et dernière question, si j'avais voulu par exemple les 3 colonnes de gauches
dans un champ, ensuite la 6ième et 7ième colonne dans un autre champs et les
3 dernières, imaginons 8,9 et 10ième colonne dans un champ, comment
défini-t-on les champs en se basant sur mon code précédent ?

Merci d'avcance et bonne soirée ou bonne journée !

Richard.

6 réponses

Avatar
michdenis
Bonjour Richard,

| Set RgLi1 = RgLi.Offset(1).Resize(RgLi.Rows.Count - 1, _
| RgLi.Columns.Count - 13).SpecialCells(xlCellTypeVisible)

Cette première ligne de code redimensionne la plage de cellule
occupé par la plage qui vient d'être filtré.
**RgLi.Offset(1). -> Afin de retiré de la plage la ligne d'étiquette du filtre

Resize(RgLi.Rows.Count - 1,RgLi.Columns.Count - 13). ->
** RgLi.Rows.Count - 1 -> enlève une ligne à la plage pour tenir compte
du "offset(1) qui lui déplaça la plage d'une ligne vers le bas
**RgLi.Columns.Count - 13 -> enlève 13 colonnes à la plage de cellules
**SpecialCells(xlCellTypeVisible) -> Tenir compte seulement des lignes visibles

|''' Début, fin, l'équipement et jours
| Set RgEq1 = RgLi.Offset(1, 8).Resize(RgLi.Rows.Count - 1, _
| RgLi.Columns.Count - 11).SpecialCells(xlCellTypeVisible)

C'est le même principe :
**RgLi.Offset(1, 8). 1 = Déplace une ligne plus bas
8 = Déplace 8 colonnes vers la droite
**C'est à partir de ce point de référence définit par le offset(1,8)
que la plage sera redimentionnée par
Resize(RgLi.Rows.Count - 1,RgLi.Columns.Count - 11).


Salutations!


"Richard Martin" a écrit dans le message de news: %
Bonjour à tous et toutes.

J'ai utilisé ce code il y a un bout de temps et je ne me rappelle plus
exactement la signification. Je voulais définir un champs pour le coller
ailleurs mais je veux recomprendre cette partie de code comme il le faut.
J'ai fait un filtre automatique et RgLi est le champ résultat du filtre.

***************
Set RgLi1 = RgLi.Offset(1).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 13).SpecialCells(xlCellTypeVisible)
''' Début, fin, l'équipement et jours
Set RgEq1 = RgLi.Offset(1, 8).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 11).SpecialCells(xlCellTypeVisible)
**************

En particulier ou il y a le (1,8). Quelqu'un peut me résumer ce code
ci-dessus s.v.p. ?

Je sais que je voulais la partie de gauche dans RgLi1 et la partie de droite
dans RgEq1.
Et dernière question, si j'avais voulu par exemple les 3 colonnes de gauches
dans un champ, ensuite la 6ième et 7ième colonne dans un autre champs et les
3 dernières, imaginons 8,9 et 10ième colonne dans un champ, comment
défini-t-on les champs en se basant sur mon code précédent ?

Merci d'avcance et bonne soirée ou bonne journée !

Richard.
Avatar
Richard Martin
Merci, je réétudie le tout et reviendrai au besoin.

Richard

"michdenis" a écrit dans le message de news:
%
Bonjour Richard,

| Set RgLi1 = RgLi.Offset(1).Resize(RgLi.Rows.Count - 1, _
| RgLi.Columns.Count - 13).SpecialCells(xlCellTypeVisible)

Cette première ligne de code redimensionne la plage de cellule
occupé par la plage qui vient d'être filtré.
**RgLi.Offset(1). -> Afin de retiré de la plage la ligne d'étiquette du
filtre

Resize(RgLi.Rows.Count - 1,RgLi.Columns.Count - 13). ->
** RgLi.Rows.Count - 1 -> enlève une ligne à la plage pour tenir compte
du "offset(1) qui lui déplaça la plage d'une ligne vers le bas
**RgLi.Columns.Count - 13 -> enlève 13 colonnes à la plage de cellules
**SpecialCells(xlCellTypeVisible) -> Tenir compte seulement des lignes
visibles

|''' Début, fin, l'équipement et jours
| Set RgEq1 = RgLi.Offset(1, 8).Resize(RgLi.Rows.Count - 1, _
| RgLi.Columns.Count - 11).SpecialCells(xlCellTypeVisible)

C'est le même principe :
**RgLi.Offset(1, 8). 1 = Déplace une ligne plus bas
8 = Déplace 8 colonnes vers la droite
**C'est à partir de ce point de référence définit par le offset(1,8)
que la plage sera redimentionnée par
Resize(RgLi.Rows.Count - 1,RgLi.Columns.Count - 11).


Salutations!


"Richard Martin" a écrit dans le message de news:
%
Bonjour à tous et toutes.

J'ai utilisé ce code il y a un bout de temps et je ne me rappelle plus
exactement la signification. Je voulais définir un champs pour le coller
ailleurs mais je veux recomprendre cette partie de code comme il le faut.
J'ai fait un filtre automatique et RgLi est le champ résultat du filtre.

***************
Set RgLi1 = RgLi.Offset(1).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 13).SpecialCells(xlCellTypeVisible)
''' Début, fin, l'équipement et jours
Set RgEq1 = RgLi.Offset(1, 8).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 11).SpecialCells(xlCellTypeVisible)
**************

En particulier ou il y a le (1,8). Quelqu'un peut me résumer ce code
ci-dessus s.v.p. ?

Je sais que je voulais la partie de gauche dans RgLi1 et la partie de
droite
dans RgEq1.
Et dernière question, si j'avais voulu par exemple les 3 colonnes de
gauches
dans un champ, ensuite la 6ième et 7ième colonne dans un autre champs et
les
3 dernières, imaginons 8,9 et 10ième colonne dans un champ, comment
défini-t-on les champs en se basant sur mon code précédent ?

Merci d'avcance et bonne soirée ou bonne journée !

Richard.







Avatar
Richard Martin
J'ai révisé et recompris et modifier ce que j'avais à modifier et en plus,
ça fonctionne bien !!!

Merci encore !

Richard Martin.

"michdenis" a écrit dans le message de news:
%
Bonjour Richard,

| Set RgLi1 = RgLi.Offset(1).Resize(RgLi.Rows.Count - 1, _
| RgLi.Columns.Count - 13).SpecialCells(xlCellTypeVisible)

Cette première ligne de code redimensionne la plage de cellule
occupé par la plage qui vient d'être filtré.
**RgLi.Offset(1). -> Afin de retiré de la plage la ligne d'étiquette du
filtre

Resize(RgLi.Rows.Count - 1,RgLi.Columns.Count - 13). ->
** RgLi.Rows.Count - 1 -> enlève une ligne à la plage pour tenir compte
du "offset(1) qui lui déplaça la plage d'une ligne vers le bas
**RgLi.Columns.Count - 13 -> enlève 13 colonnes à la plage de cellules
**SpecialCells(xlCellTypeVisible) -> Tenir compte seulement des lignes
visibles

|''' Début, fin, l'équipement et jours
| Set RgEq1 = RgLi.Offset(1, 8).Resize(RgLi.Rows.Count - 1, _
| RgLi.Columns.Count - 11).SpecialCells(xlCellTypeVisible)

C'est le même principe :
**RgLi.Offset(1, 8). 1 = Déplace une ligne plus bas
8 = Déplace 8 colonnes vers la droite
**C'est à partir de ce point de référence définit par le offset(1,8)
que la plage sera redimentionnée par
Resize(RgLi.Rows.Count - 1,RgLi.Columns.Count - 11).


Salutations!


"Richard Martin" a écrit dans le message de news:
%
Bonjour à tous et toutes.

J'ai utilisé ce code il y a un bout de temps et je ne me rappelle plus
exactement la signification. Je voulais définir un champs pour le coller
ailleurs mais je veux recomprendre cette partie de code comme il le faut.
J'ai fait un filtre automatique et RgLi est le champ résultat du filtre.

***************
Set RgLi1 = RgLi.Offset(1).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 13).SpecialCells(xlCellTypeVisible)
''' Début, fin, l'équipement et jours
Set RgEq1 = RgLi.Offset(1, 8).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 11).SpecialCells(xlCellTypeVisible)
**************

En particulier ou il y a le (1,8). Quelqu'un peut me résumer ce code
ci-dessus s.v.p. ?

Je sais que je voulais la partie de gauche dans RgLi1 et la partie de
droite
dans RgEq1.
Et dernière question, si j'avais voulu par exemple les 3 colonnes de
gauches
dans un champ, ensuite la 6ième et 7ième colonne dans un autre champs et
les
3 dernières, imaginons 8,9 et 10ième colonne dans un champ, comment
défini-t-on les champs en se basant sur mon code précédent ?

Merci d'avcance et bonne soirée ou bonne journée !

Richard.







Avatar
Richard Martin
Bonsoir

Petit éclaircissement s.v.p.

Voici une partie du code :

''' Les ordonnancement comme tel :

''' l'équipement et jours
Set RgEqJour = RgLi.Offset(1, 11).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 12).SpecialCells(xlCellTypeVisible)
'Fin de la sélection
Sheets("Ordonnancement").Select
'''''''

**********************************
1-Mon chiffier va de la colonne B jusqu'à la colonne U et le filtre est
appliqué sur le chiffrier en entier.
2-Je veux dans mon champ les données de la colonne M à la colonne T et avec
le code ci-dessus ça fonctionne.

* Le "Set RgEqJour = RgLi.Offset(1, 11)..." correspond à 11 déplacement
vers la droite à partir de la colonne B et m'amène donc en colonne M
** Le "...RgLi.Columns.Count - 12).." devrait vouloir dire de m'enlever les
12 colonnes de la fin mais je dois mal comprendre car si je veux jusqu'à la
colonne M, il me semble que ça devrait être " RgLi.Columns.Count - 1) " donc
"1" à la place de "12". C'est donc ici que ce n'est plus clair.

*** Donc même si j'ai trouvé les chiffres qui fonctionnent, j'aimerais bien
comprendre la signification réelle de ces chiffres.

Merci encore d'avance !

Richard
Avatar
michdenis
Bonjour Richard,

Afin de visualiser ce qui se passe, exécute ce code pas à pas en utilisant la touche F8
et après l'exécution de chaque ligne de code, observe la sélection des cellules
sur la feuille de calcul

'--------------------------------
Sub Test()

Dim Rg As Range, Rg1 As Range
Set Rg = Range("A1:M25")

Rg.Select

Rg.Offset(1, 11).Select

Rg.Offset(1, 11).Resize(Rg.Rows.Count - 1, _
Rg.Columns.Count - 12).SpecialCells(xlCellTypeVisible).Select

End Sub
'--------------------------------


Salutations!


"Richard Martin" a écrit dans le message de news:
Bonsoir

Petit éclaircissement s.v.p.

Voici une partie du code :

''' Les ordonnancement comme tel :

''' l'équipement et jours
Set RgEqJour = RgLi.Offset(1, 11).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 12).SpecialCells(xlCellTypeVisible)
'Fin de la sélection
Sheets("Ordonnancement").Select
'''''''

**********************************
1-Mon chiffier va de la colonne B jusqu'à la colonne U et le filtre est
appliqué sur le chiffrier en entier.
2-Je veux dans mon champ les données de la colonne M à la colonne T et avec
le code ci-dessus ça fonctionne.

* Le "Set RgEqJour = RgLi.Offset(1, 11)..." correspond à 11 déplacement
vers la droite à partir de la colonne B et m'amène donc en colonne M
** Le "...RgLi.Columns.Count - 12).." devrait vouloir dire de m'enlever les
12 colonnes de la fin mais je dois mal comprendre car si je veux jusqu'à la
colonne M, il me semble que ça devrait être " RgLi.Columns.Count - 1) " donc
"1" à la place de "12". C'est donc ici que ce n'est plus clair.

*** Donc même si j'ai trouvé les chiffres qui fonctionnent, j'aimerais bien
comprendre la signification réelle de ces chiffres.

Merci encore d'avance !

Richard
Avatar
Richard Martin
Ha bien ça alors. Quand on utilise la fonction Rg.Offset(1, 11) ça change
le début du champs mais aussi la fin du champ du même nombre de colonne.
Donc c'est pour cela que mes nombres doivent être plus grand dans mes
resize. Merci beaucoup. On dit qu'une image vaut 1000 mots. L'exemple de
code que vous m'avez envoyé était une image parfaite pour bien comprendre en
pas à pas.

Encore merci !

Richard
"michdenis" a écrit dans le message de news:
%
Bonjour Richard,

Afin de visualiser ce qui se passe, exécute ce code pas à pas en utilisant
la touche F8
et après l'exécution de chaque ligne de code, observe la sélection des
cellules
sur la feuille de calcul

'--------------------------------
Sub Test()

Dim Rg As Range, Rg1 As Range
Set Rg = Range("A1:M25")

Rg.Select

Rg.Offset(1, 11).Select

Rg.Offset(1, 11).Resize(Rg.Rows.Count - 1, _
Rg.Columns.Count - 12).SpecialCells(xlCellTypeVisible).Select

End Sub
'--------------------------------


Salutations!


"Richard Martin" a écrit dans le message de news:

Bonsoir

Petit éclaircissement s.v.p.

Voici une partie du code :

''' Les ordonnancement comme tel :

''' l'équipement et jours
Set RgEqJour = RgLi.Offset(1, 11).Resize(RgLi.Rows.Count - 1, _
RgLi.Columns.Count - 12).SpecialCells(xlCellTypeVisible)
'Fin de la sélection
Sheets("Ordonnancement").Select
'''''''

**********************************
1-Mon chiffier va de la colonne B jusqu'à la colonne U et le filtre est
appliqué sur le chiffrier en entier.
2-Je veux dans mon champ les données de la colonne M à la colonne T et
avec
le code ci-dessus ça fonctionne.

* Le "Set RgEqJour = RgLi.Offset(1, 11)..." correspond à 11 déplacement
vers la droite à partir de la colonne B et m'amène donc en colonne M
** Le "...RgLi.Columns.Count - 12).." devrait vouloir dire de m'enlever
les
12 colonnes de la fin mais je dois mal comprendre car si je veux jusqu'à
la
colonne M, il me semble que ça devrait être " RgLi.Columns.Count - 1) "
donc
"1" à la place de "12". C'est donc ici que ce n'est plus clair.

*** Donc même si j'ai trouvé les chiffres qui fonctionnent, j'aimerais
bien
comprendre la signification réelle de ces chiffres.

Merci encore d'avance !

Richard