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

Problème colonnage avec macro

22 réponses
Avatar
Mathieu
Bonjour =E0 tous,

J'ai un souci avec un fichier cr=E9=E9 par un coll=E8gue ayant quitt=E9 l'e=
ntreprise. Celui-ci contient les macros suivantes :

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Sub Macro1()
'
' Macro1 Macro
' Macro enregistr=E9e le 27/01/2011
'
' Touche de raccourci du clavier: Ctrl+m
'
Selection.Copy
Range("K8").Select
ActiveSheet.Paste
End Sub
Sub Macro3()
'
' Macro3 Macro
' Macro enregistr=E9e le 27/01/2011
'
' Touche de raccourci du clavier: Ctrl+p
'
Range("K9").Select
ActiveCell.FormulaR1C1 =3D _
"=3DIF(R[-1]C[-6]<>"""",IF(R[-1]C[-2]<>0,""retour dans le service""=
,IF(R[-1]C[-6]-TODAY()>9,""d=E9lai OK"",IF(R[-1]C[-6]-TODAY()>0,""d=E9lai u=
rgent"",""d=E9lai expir=E9""))),IF(R[-1]C[-2]<>0,""retour dans le service""=
,""pas de d=E9lai""))"
Range("K10").Select
End Sub
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Mon probl=E8me vient de la seconde macro. Initialement le Range("K9") =E9ta=
it ("J9"), chang=E9 par mes soins.
J'ai =E9t=E9 contraint d'ajouter une colonne et de ce fait elle n'est plus =
exacte. Ma nouvelle colonne est en H. Quand la macro s'ex=E9cute elle retou=
rne ceci :

=3DSI(F492<>"";SI(I492<>0;"retour dans le service";SI(F492-AUJOURDHUI()>9;"=
d=E9lai OK";SI(F492-AUJOURDHUI()>0;"d=E9lai urgent";"d=E9lai expir=E9")));S=
I(I492<>0;"retour dans le service";"pas de d=E9lai"))

Or, pour =EAtre exacte il faudrait que la colonne F indiqu=E9e dans cette m=
acro soit la colonne E et donc =EAtre :

=3DSI(E492<>"";SI(I492<>0;"retour dans le service";SI(E492-AUJOURDHUI()>9;"=
d=E9lai OK";SI(E492-AUJOURDHUI()>0;"d=E9lai urgent";"d=E9lai expir=E9")));S=
I(I492<>0;"retour dans le service";"pas de d=E9lai"))

J'ai chang=E9 plusieurs fois les valeurs C[-6] ou C[-2] mais le r=E9sultat =
final est toujours le m=EAme et donc tronqu=E9. Mon r=E9sultat s'affiche bi=
en en K mais au lieu de prendre en consid=E9ration que C[-valeur] devrait =
=EAtre la colonne E et non la F.

Pourriez-vous m'aider s'il vous plait ?
Par avance je vous remercie de vos bons conseils,

10 réponses

1 2 3
Avatar
Jacky
Bonsoir,
Sans plus d'infos, je dirai...
'----------
Macro 1
Selection.Copy [K8]
'------------
Macro 3
Range("j9").Formula = "=IF(E8<>"""",IF(I8<>0,""retour dans le service"",IF(E8-TODAY()>9,""délai
OK"",IF(E8-TODAY()>0,""délai urgent"",""délai expiré""))),IF(I8<>0,""retour dans le service"",""pas de
délai""))"
'------------
--
Salutations
JJ


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

Bonjour à tous,

J'ai un souci avec un fichier créé par un collègue ayant quitté l'entreprise. Celui-ci contient les macros
suivantes :

=================== Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 27/01/2011
'
' Touche de raccourci du clavier: Ctrl+m
'
Selection.Copy
Range("K8").Select
ActiveSheet.Paste
End Sub
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 27/01/2011
'
' Touche de raccourci du clavier: Ctrl+p
'
Range("K9").Select
ActiveCell.FormulaR1C1 = _
"=IF(R[-1]C[-6]<>"""",IF(R[-1]C[-2]<>0,""retour dans le service"",IF(R[-1]C[-6]-TODAY()>9,""délai
OK"",IF(R[-1]C[-6]-TODAY()>0,""délai urgent"",""délai expiré""))),IF(R[-1]C[-2]<>0,""retour dans le
service"",""pas de délai""))"
Range("K10").Select
End Sub
=================
Mon problème vient de la seconde macro. Initialement le Range("K9") était ("J9"), changé par mes soins.
J'ai été contraint d'ajouter une colonne et de ce fait elle n'est plus exacte. Ma nouvelle colonne est en H.
Quand la macro s'exécute elle retourne ceci :

=SI(F492<>"";SI(I492<>0;"retour dans le service";SI(F492-AUJOURDHUI()>9;"délai
OK";SI(F492-AUJOURDHUI()>0;"délai urgent";"délai expiré")));SI(I492<>0;"retour dans le service";"pas de
délai"))

Or, pour être exacte il faudrait que la colonne F indiquée dans cette macro soit la colonne E et donc être :

=SI(E492<>"";SI(I492<>0;"retour dans le service";SI(E492-AUJOURDHUI()>9;"délai
OK";SI(E492-AUJOURDHUI()>0;"délai urgent";"délai expiré")));SI(I492<>0;"retour dans le service";"pas de
délai"))

J'ai changé plusieurs fois les valeurs C[-6] ou C[-2] mais le résultat final est toujours le même et donc
tronqué. Mon résultat s'affiche bien en K mais au lieu de prendre en considération que C[-valeur] devrait être
la colonne E et non la F.

Pourriez-vous m'aider s'il vous plait ?
Par avance je vous remercie de vos bons conseils,
Avatar
Jacky
Humm!!
Range("K9").Formula =.....
Et non pas
Range("j9").Formula =....
--
Salutations
JJ


"Jacky" a écrit dans le message de news: k6gs6o$omv$
Bonsoir,
Sans plus d'infos, je dirai...
'----------
Macro 1
Selection.Copy [K8]
'------------
Macro 3
Range("j9").Formula = "=IF(E8<>"""",IF(I8<>0,""retour dans le service"",IF(E8-TODAY()>9,""délai
OK"",IF(E8-TODAY()>0,""délai urgent"",""délai expiré""))),IF(I8<>0,""retour dans le service"",""pas de
délai""))"
'------------
--
Salutations
JJ


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

Bonjour à tous,

J'ai un souci avec un fichier créé par un collègue ayant quitté l'entreprise. Celui-ci contient les macros
suivantes :

=================== > Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 27/01/2011
'
' Touche de raccourci du clavier: Ctrl+m
'
Selection.Copy
Range("K8").Select
ActiveSheet.Paste
End Sub
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 27/01/2011
'
' Touche de raccourci du clavier: Ctrl+p
'
Range("K9").Select
ActiveCell.FormulaR1C1 = _
"=IF(R[-1]C[-6]<>"""",IF(R[-1]C[-2]<>0,""retour dans le service"",IF(R[-1]C[-6]-TODAY()>9,""délai
OK"",IF(R[-1]C[-6]-TODAY()>0,""délai urgent"",""délai expiré""))),IF(R[-1]C[-2]<>0,""retour dans le
service"",""pas de délai""))"
Range("K10").Select
End Sub
================= >
Mon problème vient de la seconde macro. Initialement le Range("K9") était ("J9"), changé par mes soins.
J'ai été contraint d'ajouter une colonne et de ce fait elle n'est plus exacte. Ma nouvelle colonne est en H.
Quand la macro s'exécute elle retourne ceci :

=SI(F492<>"";SI(I492<>0;"retour dans le service";SI(F492-AUJOURDHUI()>9;"délai
OK";SI(F492-AUJOURDHUI()>0;"délai urgent";"délai expiré")));SI(I492<>0;"retour dans le service";"pas de
délai"))

Or, pour être exacte il faudrait que la colonne F indiquée dans cette macro soit la colonne E et donc être :

=SI(E492<>"";SI(I492<>0;"retour dans le service";SI(E492-AUJOURDHUI()>9;"délai
OK";SI(E492-AUJOURDHUI()>0;"délai urgent";"délai expiré")));SI(I492<>0;"retour dans le service";"pas de
délai"))

J'ai changé plusieurs fois les valeurs C[-6] ou C[-2] mais le résultat final est toujours le même et donc
tronqué. Mon résultat s'affiche bien en K mais au lieu de prendre en considération que C[-valeur] devrait
être la colonne E et non la F.

Pourriez-vous m'aider s'il vous plait ?
Par avance je vous remercie de vos bons conseils,

Avatar
Mathieu
Bonjour Jacky,

Je ne comprends pas très bien car en fait l'insertion de nouvelles lignes est faite automatiquement via un formulaire d'où le fait que l'ancien co llègue utilisée les références R et C pour définir l'emplacement des colonnes/lignes à prendre en considération pour la condition SI.


Merci Jacky
Avatar
Mathieu
J'ai essayé ci-dessous de mettre cela plus clairement :

Voici mes colonnes :

A, B, C, D : sans importance pas besoin de les détailler ici
E : Date limite
F : Date départ
G : Date visa
H : Date retour
I : sans importance
J : affiche le résultat de la macro

donc mon truc est de faire que :

si E = quelque chose et que H = quelque chose alors J = "retour dans le service"
si E = une date de plus de 8 jours à compter d'aujourd'hui et que H = rien alors J = "délai ok", sinon J = "délai urgent"
si E = une date équivalente à aujourd'hui ou dépassé alors J = "délai expiré
si E = rien et que H = rien alors J = "délai ok"
Avatar
Mathieu
Voici mes colonnes :

A, B, C, D : sans importance pas besoin de les détailler ici
E : Date limite
F : Date départ
G : Date visa
H : sans importance
I : Date retour
J : sans importance
K : affiche le résultat de la macro

donc mon truc est de faire que :

si E = quelque chose et que I = quelque chose alors K = "retour dans le service"
si E = une date de plus de 8 jours à compter d'aujourd'hui et que I = rien alors K = "délai ok", sinon K = "délai urgent"
si E = une date équivalente à aujourd'hui ou dépassé alors K = "délai expiré
si E = rien et que I = rien alors K = "délai ok"
Avatar
Jacky
RE...
Je ne comprends pas très bien car en fait l'insertion de nouvelles lignes est faite automatiquement




Dans l'exemple la destination et une cellule fixe
Range("K9").Select




Ou alors la macro postée n'est pas compète
Je n'ai pas vérifier les conditions de la formule, juste modifié les adresses de cellules
Cela ne donne pas le résultat escompté ??

--
Salutations
JJ


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

Bonjour Jacky,

Je ne comprends pas très bien car en fait l'insertion de nouvelles lignes est faite automatiquement via un
formulaire d'où le fait que l'ancien collègue utilisée les références R et C pour définir l'emplacement des
colonnes/lignes à prendre en considération pour la condition SI.


Merci Jacky
Avatar
Mathieu
Jacky,

mon souci est de trouver le bon chiffre à mettre après C dans ma macro pour pointer la colonne E et non la F.

La macro exécutait donne cette formule :
=SI(F498<>"";SI(I498<>0;"retour dans le service";SI(F498-AUJOURDHUI()>9;" délai OK";SI(F498-AUJOURDHUI()>0;"délai urgent";"délai expiré")));S I(I498<>0;"retour dans le service";"pas de délai"))

moi je cherche à ce qu'elle donne ceci :
=SI(E498<>"";SI(I498<>0;"retour dans le service";SI(E498-AUJOURDHUI()>9;" délai OK";SI(E498-AUJOURDHUI()>0;"délai urgent";"délai expiré")));S I(I498<>0;"retour dans le service";"pas de délai"))

Tu constates que la seule différence c'est que la macro se trompe de colo nne (F au lieu de E) pour faire ses conditions SI et cette tromperie vient du chiffre indiqué dans la macro après les 3 C[-6] :

"=IF(R[-1]C[-6]<>"""",IF(R[-1]C[-2]<>0,""retour dans le service"",IF(R[- 1]C[-6]-TODAY()>9,""délai OK"",IF(R[-1]C[-6]-TODAY()>0,""délai urgent"" ,""délai expiré""))),IF(R[-1]C[-2]<>0,""retour dans le service"",""pas de délai""))"

donc je cherche la bonne valeur à mettre au lieu de C[-6], j'ai essayé C[-5] et C[-7] et la macro continues de prendre malgré cela la mauvaise c olonne
Avatar
Jacky
donc je cherche la bonne valeur à mettre au lieu de C[-6],


Ecrit de cette façon, cela dépendra de l'adresse de la cellule active!
--
Salutations
JJ


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

Jacky,

mon souci est de trouver le bon chiffre à mettre après C dans ma macro pour pointer la colonne E et non la F.

La macro exécutait donne cette formule :
=SI(F498<>"";SI(I498<>0;"retour dans le service";SI(F498-AUJOURDHUI()>9;"délai
OK";SI(F498-AUJOURDHUI()>0;"délai urgent";"délai expiré")));SI(I498<>0;"retour dans le service";"pas de
délai"))

moi je cherche à ce qu'elle donne ceci :
=SI(E498<>"";SI(I498<>0;"retour dans le service";SI(E498-AUJOURDHUI()>9;"délai
OK";SI(E498-AUJOURDHUI()>0;"délai urgent";"délai expiré")));SI(I498<>0;"retour dans le service";"pas de
délai"))

Tu constates que la seule différence c'est que la macro se trompe de colonne (F au lieu de E) pour faire ses
conditions SI et cette tromperie vient du chiffre indiqué dans la macro après les 3 C[-6] :

"=IF(R[-1]C[-6]<>"""",IF(R[-1]C[-2]<>0,""retour dans le service"",IF(R[-1]C[-6]-TODAY()>9,""délai
OK"",IF(R[-1]C[-6]-TODAY()>0,""délai urgent"",""délai expiré""))),IF(R[-1]C[-2]<>0,""retour dans le
service"",""pas de délai""))"

donc je cherche la bonne valeur à mettre au lieu de C[-6], j'ai essayé C[-5] et C[-7] et la macro continues de
prendre malgré cela la mauvaise colonne
Avatar
Mathieu
Merci Jacky,

Je ne comprends pas mais comment faire pour que cette cellule active corres ponde strictement à la colonne E (sachant que mon table comporte les colo nnes allant de A à K et que le résultat de la macro est affiché en K) ?

Merci.
Avatar
Jacky
Re...
Je ne comprends pas ......




Moi non plus!
http://cjoint.com/?BJBsV7pUGBV

--
Salutations
JJ


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

Merci Jacky,

Je ne comprends pas mais comment faire pour que cette cellule active corresponde strictement à la colonne E
(sachant que mon table comporte les colonnes allant de A à K et que le résultat de la macro est affiché en K)
?

Merci.
1 2 3