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
Mathieu
Je vais te faire un fichier allégé pour que tu puisses comprendre.
Avatar
Mathieu
Voici mon fichier.
http://cjoint.com/data3/3JBtNwK8G63.htm

A l'ouverture un formulaire s'affiche. Il faut sélectionner le service, i ndiquer un objet, et cocher la case "Dossier" avant de valider. Si tu entre s une date limite ("dossier à lire avant le") elle s'affichera en colonne E. C'est cette valeur qui est très importante et qui détermine tout le résultat de la macro que tu peux constater en colonne K mais ici, dans m on fichier, si tu as une valeur en E la colonne K ne devrait pas afficher " pas de délai". Elle le fait car elle croit que la valeur de départ des conditions SI est la colonne F.
Avatar
Jacky
RE..
Je n'ai pas de difficulté pour remplacer le colonne F par la colonne E avec
"=IF(R[-0]C[-6]<>"""",IF(R[-0]C[-2]<>0,""retour dans le service"",IF(R[-0]C[-6]-TODAY()>9,""délai
OK"",IF(R[-0]C[-6]-TODAY()
Il est évident que les lignes déjà saisie n'en sont pas modifiées
http://cjoint.com/?BJBvcHGeB5t

Tu devrais t'inspirer du classeur de DenisM pour la manière d'utiliser un formulaire (userform)
Surtout la façon de transférer sur la feuille
http://cjoint.com/?BIArNNVG28e

--
Salutations
JJ


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

Voici mon fichier.
http://cjoint.com/data3/3JBtNwK8G63.htm

A l'ouverture un formulaire s'affiche. Il faut sélectionner le service, indiquer un objet, et cocher la case
"Dossier" avant de valider. Si tu entres une date limite ("dossier à lire avant le") elle s'affichera en
colonne E. C'est cette valeur qui est très importante et qui détermine tout le résultat de la macro que tu
peux constater en colonne K mais ici, dans mon fichier, si tu as une valeur en E la colonne K ne devrait pas
afficher "pas de délai". Elle le fait car elle croit que la valeur de départ des conditions SI est la colonne
F.
Avatar
Mathieu
Merci Jacky,
Qu'as tu modifié pour que cela fonctionne ?
Avatar
Jacky
RE..
Rien !
Mais si tu souhaites resté dans cette formulation tu peux supprimer les "[-0]"
Ceci est suffisant
'---------------------
"=IF(RC[-6]<>"""",IF(RC[-2]<>0,""retour dans le service"",IF(RC[-6]-TODAY()>9,""délai
OK"",IF(RC[-6]-TODAY()>0,""délai urgent"",""délai expiré""))),IF(RC[-2]<>0,""retour dans le service"",""pas de
délai""))"

Je ne peux que te conseiller de regarder le classeur de Denis
Cela t'éviteras de partir vers de mauvaises pistes
--
Salutations
JJ


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

Merci Jacky,
Qu'as tu modifié pour que cela fonctionne ?
Avatar
Mathieu
Merci Jacky,
Je vais laisser tomber car nous sommes dans le paranormal là. Si je fais les tests avec le fichier que je t'ai envoyé cela ne fonctionne pas, Exce l prend à tort la colonne F comme base.
Si je prends le fichier que tu m'as renvoyé, Excel prend parfaitement bie n la colonne E comme base.
Si tu n'as rien modifié, je n'explique pas cette différence de comporte ment d'Excel.
Avatar
Jacky
Re..
Je vais laisser tomber car nous sommes dans le paranormal là




Il n'y a rien de paranormal ;o))
Tout dépend de la cellule active
Dans ton classeur, la cellule active est définie par l'instruction "Sélection.Offset(ligvar, colvar).Select"
Place ce code à la suite de cette instruction
MsgBox Selection.Address
Tu auras l'adresse de la cellule active
C'est à partir de l'adresse de cette cellule que les autres sont calculées "R[-1]C[-6]"
R=Ligne (ici -1)
C=Colonne (ici -6)
Si la cellule active est par exemple "K15"
"R[-1]C[-6]" sera E14
pour
"R[-0]C[-6]" sera E15
équivalent de
"RC[-6]"

--
Salutations
JJ


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

Merci Jacky,
Je vais laisser tomber car nous sommes dans le paranormal là. Si je fais les tests avec le fichier que je t'ai
envoyé cela ne fonctionne pas, Excel prend à tort la colonne F comme base.
Si je prends le fichier que tu m'as renvoyé, Excel prend parfaitement bien la colonne E comme base.
Si tu n'as rien modifié, je n'explique pas cette différence de comportement d'Excel.
Avatar
Mathieu
Merci Jacky,
Tous ces codes m'échappent et je galère dessus depuis 2 semaines sans r ésultat, je n'ai pas le déclic pour comprendre comment solutionner dé finitivement ce problème. Est-il possible alors d'obliger à ce que la c ellule active soit toujours en colonne K ?
Avatar
Jacky
Re..
Est-il possible alors d'obliger à ce que la cellule active soit toujours en colonne K ?


C'est le cas dans le classeur posté, et je n'ai aucun problème
Tous ces codes m'échappent et je galère dessus depuis 2 semaines sans résultat


Bon,
Je te propose néanmoins une solution avec une façon de faire un peu plus usuelle dans le fichier joint
Cependant, aucun contrôle de validité des saisies ou des formules n'est faites dans cet exemple hormis celui
du "CheckBox"
http://cjoint.com/?BJCniQFzodR

Bon courage

--
Salutations
JJ


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

Merci Jacky,
Tous ces codes m'échappent et je galère dessus depuis 2 semaines sans résultat, je n'ai pas le déclic pour
comprendre comment solutionner définitivement ce problème. Est-il possible alors d'obliger à ce que la cellule
active soit toujours en colonne K ?
Avatar
Mathieu
Bonjour et merci Jacky,

Et on ne peut pas remplacer tout ce code basé sur la cellule active pour indiquer très précisément qu'il faut prendre la colonne E en consid ération et éviter tous ces calculs de positionnement ?

Merci ;)
1 2 3