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

Procedure a dechiffré

5 réponses
Avatar
IMER09
Bonjour a tous
j'ai ce qui suit ds ma procedure a l'ouverture de mon fichier

quelqu' un peut il me l'expliquer (traduire)

Range("A4:A" & [A65536].End(3).Row).Offset(0, 15).Select
Set C = Selection.Find("", , , xlWhole)
If Not C Is Nothing Then
premier = C.Address
Do
C.FormulaR1C1 = "=RC[-3]"
Set C = Selection.FindNext(C)
On Error Resume Next
Loop While Not C Is Nothing And C.Address <> premier

End If
End If

Merci
--
IMER09

5 réponses

Avatar
anonymousA
Bonjour

En fait, il s'agit d'une procédure qui détecte les cellules vides dans
la colonne P à partir de P4 jusqu'à la ligne dont le numéro est
référencé par rapport à la dernière cellule non vide de la colonne A (
donc si dans la colonne A la dernière cellule non vide est la cellule
A258, alors la proc ci-dessous selectionne les cellule P4 à P258). Puis
avec ces cellules non vides de la plage selectionnée, la proc met dans
ces cellules une formule =Mx x étant le numéro de la ligne où des
cellules vides ont été trouvées.

Range("A4:A" & [A65536].End(3).Row).Offset(0, 15).Select
'on selectionne la cellule P4 à Px. x est déterminé par Range("A4:A" &
[A65536].End(3).Row).La sélection des cellules de la colonne P est
assurée par le décalage par rapport à la colonne A ( .Offset(0, 15))
décalage de 0 lignes et 15 colonnes.

Set C = Selection.Find("", , , xlWhole)
'on détecte dans la plage P4:Px une cellule vide puis on boucle sur
l'ensemble des autres cellules vides de la plage grace à Do Loop et
controle sur adresse de la première cellule détectée (adresse repérée
par premier)
If Not C Is Nothing Then
premier = C.Address
Do
C.FormulaR1C1 = "=RC[-3]"
Set C = Selection.FindNext(C)
On Error Resume Next
Loop While Not C Is Nothing And C.Address <> premier
Dans chaque cellule vide détectée , on met une formule =Mx car "=RC[-3]"
signifie que l'on référence la formule par rapport à la même ligne et à
3 colonnes en amont.

Par ailleurs, dans la proc que tu envoies, le dernier End if n'a pas de
sens sauf si la proc que tu envoies est tronquée et qu'il y a un If
avant celle-ci.

Enfin, si j'en crois ce que tu envoies, l'ensemble de cette proc peut
être remplacée par une seule ligne suivante: cette ligen doit être
écrite d'un seul tenant.

Range("A4:A" & [A65536].End(3).Row).Offset(0,
15).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC[-3]"

A+

IMER09 a écrit :
Bonjour a tous
j'ai ce qui suit ds ma procedure a l'ouverture de mon fichier

quelqu' un peut il me l'expliquer (traduire)

Range("A4:A" & [A65536].End(3).Row).Offset(0, 15).Select
Set C = Selection.Find("", , , xlWhole)
If Not C Is Nothing Then
premier = C.Address
Do
C.FormulaR1C1 = "=RC[-3]"
Set C = Selection.FindNext(C)
On Error Resume Next
Loop While Not C Is Nothing And C.Address <> premier

End If
End If

Merci


Avatar
IMER09
Un grd merci anonymousA pour ces explications plus que complete

La raison de ma question:
A l'ouverture de mon fichier j'importe, d'1 autre fichier excel, des données
que je trie et met en page (couleur, format etc)
Et donc la premiere fois que j'ouvre mon fichier, mon tableau est vide,et
j'ai l'impression que tout se passe bien jusqu' a cet partie de la procedure:
ca bloque! mais ca ne bug pas. Je suis oblige de faire ECHAP.
Par contre quand je l'ouvre une deuxieme fois je n'ai plus de PB !!
Je pense que c'est a partir de cette proc que ca bloque parce que je fais
apparaitre un UF avec un curseur, pour faire patienter pdt la proc qui est
assez longue, et il se bloque à 30%, et a 30% j'ai cette proc qui s'execute
En fait quand mon tableau est vierge ca coince

Merci

je vais essayer ton racourci
--
IMER09


"anonymousA" wrote:


Bonjour

En fait, il s'agit d'une procédure qui détecte les cellules vides dans
la colonne P à partir de P4 jusqu'à la ligne dont le numéro est
référencé par rapport à la dernière cellule non vide de la colonne A (
donc si dans la colonne A la dernière cellule non vide est la cellule
A258, alors la proc ci-dessous selectionne les cellule P4 à P258). Puis
avec ces cellules non vides de la plage selectionnée, la proc met dans
ces cellules une formule =Mx x étant le numéro de la ligne où des
cellules vides ont été trouvées.

Range("A4:A" & [A65536].End(3).Row).Offset(0, 15).Select
'on selectionne la cellule P4 à Px. x est déterminé par Range("A4:A" &
[A65536].End(3).Row).La sélection des cellules de la colonne P est
assurée par le décalage par rapport à la colonne A ( .Offset(0, 15))
décalage de 0 lignes et 15 colonnes.

Set C = Selection.Find("", , , xlWhole)
'on détecte dans la plage P4:Px une cellule vide puis on boucle sur
l'ensemble des autres cellules vides de la plage grace à Do Loop et
controle sur adresse de la première cellule détectée (adresse repérée
par premier)
If Not C Is Nothing Then
premier = C.Address
Do
C.FormulaR1C1 = "=RC[-3]"
Set C = Selection.FindNext(C)
On Error Resume Next
Loop While Not C Is Nothing And C.Address <> premier
Dans chaque cellule vide détectée , on met une formule =Mx car "=RC[-3]"
signifie que l'on référence la formule par rapport à la même ligne et à
3 colonnes en amont.

Par ailleurs, dans la proc que tu envoies, le dernier End if n'a pas de
sens sauf si la proc que tu envoies est tronquée et qu'il y a un If
avant celle-ci.

Enfin, si j'en crois ce que tu envoies, l'ensemble de cette proc peut
être remplacée par une seule ligne suivante: cette ligen doit être
écrite d'un seul tenant.

Range("A4:A" & [A65536].End(3).Row).Offset(0,
15).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC[-3]"

A+

IMER09 a écrit :
> Bonjour a tous
> j'ai ce qui suit ds ma procedure a l'ouverture de mon fichier
>
> quelqu' un peut il me l'expliquer (traduire)
>
> Range("A4:A" & [A65536].End(3).Row).Offset(0, 15).Select
> Set C = Selection.Find("", , , xlWhole)
> If Not C Is Nothing Then
> premier = C.Address
> Do
> C.FormulaR1C1 = "=RC[-3]"
> Set C = Selection.FindNext(C)
> On Error Resume Next
> Loop While Not C Is Nothing And C.Address <> premier
>
> End If
> End If
>
> Merci



Avatar
IMER09
Me revoila

Je viens d'essayer avec la proc que tu ma ecrite et je n'ai plus de pb meme
a la premiere ouverture de mon fichier

Un grd grd merci
je crois qu'il faudrai que je face une formation excel car je me complique
souvent l'existence avec des proc trop longue
Merci encore
--
IMER09


"IMER09" wrote:

Bonjour a tous
j'ai ce qui suit ds ma procedure a l'ouverture de mon fichier

quelqu' un peut il me l'expliquer (traduire)

Range("A4:A" & [A65536].End(3).Row).Offset(0, 15).Select
Set C = Selection.Find("", , , xlWhole)
If Not C Is Nothing Then
premier = C.Address
Do
C.FormulaR1C1 = "=RC[-3]"
Set C = Selection.FindNext(C)
On Error Resume Next
Loop While Not C Is Nothing And C.Address <> premier

End If
End If

Merci
--
IMER09


Avatar
anonymousA
Re,

Content de voir que tu as résolu ton problème. Rassure-toi, pour faire
court il faut avoir fait long ce qui d'ailleurs est l'exact contraire
d'autres disciplines que je laissa à tous le soin d'imaginer !!

A+


IMER09 a écrit :
Me revoila

Je viens d'essayer avec la proc que tu ma ecrite et je n'ai plus de pb meme
a la premiere ouverture de mon fichier

Un grd grd merci
je crois qu'il faudrai que je face une formation excel car je me complique
souvent l'existence avec des proc trop longue
Merci encore


Avatar
Papyjac
Bonjour imer09

tu poses la question a celui qui t'a donné le classeur,
Sinon, tu détruis tout sans vergogne


--
Papyjac


"anonymousA" a écrit :


Bonjour

En fait, il s'agit d'une procédure qui détecte les cellules vides dans
la colonne P à partir de P4 jusqu'à la ligne dont le numéro est
référencé par rapport à la dernière cellule non vide de la colonne A (
donc si dans la colonne A la dernière cellule non vide est la cellule
A258, alors la proc ci-dessous selectionne les cellule P4 à P258). Puis
avec ces cellules non vides de la plage selectionnée, la proc met dans
ces cellules une formule =Mx x étant le numéro de la ligne où des
cellules vides ont été trouvées.

Range("A4:A" & [A65536].End(3).Row).Offset(0, 15).Select
'on selectionne la cellule P4 à Px. x est déterminé par Range("A4:A" &
[A65536].End(3).Row).La sélection des cellules de la colonne P est
assurée par le décalage par rapport à la colonne A ( .Offset(0, 15))
décalage de 0 lignes et 15 colonnes.

Set C = Selection.Find("", , , xlWhole)
'on détecte dans la plage P4:Px une cellule vide puis on boucle sur
l'ensemble des autres cellules vides de la plage grace à Do Loop et
controle sur adresse de la première cellule détectée (adresse repérée
par premier)
If Not C Is Nothing Then
premier = C.Address
Do
C.FormulaR1C1 = "=RC[-3]"
Set C = Selection.FindNext(C)
On Error Resume Next
Loop While Not C Is Nothing And C.Address <> premier
Dans chaque cellule vide détectée , on met une formule =Mx car "=RC[-3]"
signifie que l'on référence la formule par rapport à la même ligne et à
3 colonnes en amont.

Par ailleurs, dans la proc que tu envoies, le dernier End if n'a pas de
sens sauf si la proc que tu envoies est tronquée et qu'il y a un If
avant celle-ci.

Enfin, si j'en crois ce que tu envoies, l'ensemble de cette proc peut
être remplacée par une seule ligne suivante: cette ligen doit être
écrite d'un seul tenant.

Range("A4:A" & [A65536].End(3).Row).Offset(0,
15).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=RC[-3]"

A+

IMER09 a écrit :
> Bonjour a tous
> j'ai ce qui suit ds ma procedure a l'ouverture de mon fichier
>
> quelqu' un peut il me l'expliquer (traduire)
>
> Range("A4:A" & [A65536].End(3).Row).Offset(0, 15).Select
> Set C = Selection.Find("", , , xlWhole)
> If Not C Is Nothing Then
> premier = C.Address
> Do
> C.FormulaR1C1 = "=RC[-3]"
> Set C = Selection.FindNext(C)
> On Error Resume Next
> Loop While Not C Is Nothing And C.Address <> premier
>
> End If
> End If
>
> Merci