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

Aide sur fonction indirect

49 réponses
Avatar
Lionel M
http://www.cjoint.com/c/FArlY0kSVd4

Dans l'onglet CP-Mal

la ligne 9 appelle la ligne du mois A2 concernant la personne en A3

une fois cette ligne appell=E9e la macro fait un copier coller de cette lig=
ne puis c'est la que l'aide m'est indispensable modifier entre les dates st=
ipul=E9es les codes not=E9s par CP ou Mal suivant le cas design=E9 en A4...=
et ensuite de remettre cette ligne modifiee sur la bonne ligne de l'onglet =
du mois concern=E9

dans un premier temps la formule indirect ne fonctionne pas et rien ne sert=
d'aller plus loin si je n'arrive pas a obtenir le resultat escompt=E9 ....
Merci de l'aide !
Lionel

9 réponses

1 2 3 4 5
Avatar
Jacquouille
Bonsoir
Dans la logique de suite de la réponse de Denis à 14h,
il serait bon de préciser ce que tu veux.
Pour l'instant, je viens de relire tout le fil et les différentes
réponses...mais je n'ai toujours pas compris où tu voulais en arriver.
Désires-tu un tableau récapitulatif par personne, qui reprendrait tous les
mois sur une seule feuille; donc, autant de feuilles récap que de personnes,
mais tous les mois d'une personne sur la même feuille. c'est cela?



Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Lionel M" a écrit dans le message de groupe de discussion :


http://www.cjoint.com/c/FArlY0kSVd4

Dans l'onglet CP-Mal

la ligne 9 appelle la ligne du mois A2 concernant la personne en A3

une fois cette ligne appellée la macro fait un copier coller de cette ligne
puis c'est la que l'aide m'est indispensable modifier entre les dates
stipulées les codes notés par CP ou Mal suivant le cas designé en A4...et
ensuite de remettre cette ligne modifiee sur la bonne ligne de l'onglet du
mois concerné

dans un premier temps la formule indirect ne fonctionne pas et rien ne sert
d'aller plus loin si je n'arrive pas a obtenir le resultat escompté ....
Merci de l'aide !
Lionel


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Lionel M
Le samedi 6 février 2016 20:40:12 UTC+1, Jacquouille a écrit :
Bonsoir
Dans la logique de suite de la réponse de Denis à 14h,
il serait bon de préciser ce que tu veux.
Pour l'instant, je viens de relire tout le fil et les différentes
réponses...mais je n'ai toujours pas compris où tu voulais en arriver .
Désires-tu un tableau récapitulatif par personne, qui reprendrait tou s les
mois sur une seule feuille; donc, autant de feuilles récap que de perso nnes,
mais tous les mois d'une personne sur la même feuille. c'est cela?



Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Lionel M" a écrit dans le message de groupe de discussion :


http://www.cjoint.com/c/FArlY0kSVd4

Dans l'onglet CP-Mal

la ligne 9 appelle la ligne du mois A2 concernant la personne en A3

une fois cette ligne appellée la macro fait un copier coller de cette l igne
puis c'est la que l'aide m'est indispensable modifier entre les dates
stipulées les codes notés par CP ou Mal suivant le cas designé en A 4...et
ensuite de remettre cette ligne modifiee sur la bonne ligne de l'onglet d u
mois concerné

dans un premier temps la formule indirect ne fonctionne pas et rien ne se rt
d'aller plus loin si je n'arrive pas a obtenir le resultat escompté ... .
Merci de l'aide !
Lionel


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com



Rebonsoir,

Je recommence l'explication à zero...

http://www.cjoint.com/c/FBgxRP4RgIr

Dans l'onglet CP-MAL
Les cellules B9:AF9 sont "indexées" sur les cellules de l'onglet spécif iée par la cellule A2 (mois) et A3 (Nom)

je lance la macro (macro1) de cette feuille qui vient copier cette ligne 9 pour la recopier en ligne 13.
puis suivant les données en A4 (CP ou Mal) A5 et A6 (date debut et fin), la macro vient remplacer entre les dates
précitées les valeurs des cellules concernées par CP ou MAL .

J'aimerais ameliorer cette macro pour que les cellules vides avant remplace ment soit remplacées par "cp" (en minuscules) ou "Mld" et les cases qui a l'origine n'étaient pas vides soient remplacées par "CP" (en majuscule s) ou "Mal". puis une fois cela fait, il faudrait que cette ligne (B13:AF13 ) soit recopiée dans l'onglet indiqué en A2 de l'onglet CP-MAL( Janvier dans l'exemple envoyé) sur la ligne de la personne citée en A3 de l'on glet CP-MAL (Merillou dans l'exemple)

Dans le fichier envoyé en A2 "Janvier" en A3 "Merillou"
La macro doit trouver la ligne de Merillou dans l'onglet "Janvier" et recop ier sur cette ligne entre B et AF les valeurs de la ligne B13:AF13 de l'ong ler CP-MAL .

En gros on copie les cellules du planning d'origine on modifie et on met le s nouvelles données dans le planning

J'espere que cela paraitra clair... Merci encore de l'aide que vous voudrez bien m'accorder...
Lionel
Avatar
DanielCo
Rebonsoir,

Je recommence l'explication à zero...

http://www.cjoint.com/c/FBgxRP4RgIr

Dans l'onglet CP-MAL
Les cellules B9:AF9 sont "indexées" sur les cellules de l'onglet spécifiée
par la cellule A2 (mois) et A3 (Nom)

je lance la macro (macro1) de cette feuille qui vient copier cette ligne 9
pour la recopier en ligne 13. puis suivant les données en A4 (CP ou Mal) A5
et A6 (date debut et fin), la macro vient remplacer entre les dates précitées
les valeurs des cellules concernées par CP ou MAL .

J'aimerais ameliorer cette macro pour que les cellules vides avant
remplacement soit remplacées par "cp" (en minuscules) ou "Mld" et les cases
qui a l'origine n'étaient pas vides soient remplacées par "CP" (en
majuscules) ou "Mal". puis une fois cela fait, il faudrait que cette ligne
(B13:AF13) soit recopiée dans l'onglet indiqué en A2 de l'onglet CP-MAL(
Janvier dans l'exemple envoyé) sur la ligne de la personne citée en A3 de
l'onglet CP-MAL (Merillou dans l'exemple)

Dans le fichier envoyé en A2 "Janvier" en A3 "Merillou"
La macro doit trouver la ligne de Merillou dans l'onglet "Janvier" et
recopier sur cette ligne entre B et AF les valeurs de la ligne B13:AF13 de
l'ongler CP-MAL .

En gros on copie les cellules du planning d'origine on modifie et on met les
nouvelles données dans le planning

J'espere que cela paraitra clair... Merci encore de l'aide que vous voudrez
bien m'accorder... Lionel



Bonjour,
dans B9 :
=INDEX(INDIRECT($A$2&"!$B6:$AX146");(EQUIV($A$3;nom;0)-1)*5+1;COLONNE()-1)
"nom" n'est pas un nom défini. Est-ce normal ?
Cordialement.
Daniel
Avatar
Lionel M
Le dimanche 7 février 2016 12:38:31 UTC+1, DanielCo a écrit :
> Rebonsoir,
>
> Je recommence l'explication à zero...
>
> http://www.cjoint.com/c/FBgxRP4RgIr
>
> Dans l'onglet CP-MAL
> Les cellules B9:AF9 sont "indexées" sur les cellules de l'onglet sp écifiée
> par la cellule A2 (mois) et A3 (Nom)
>
> je lance la macro (macro1) de cette feuille qui vient copier cette lign e 9
> pour la recopier en ligne 13. puis suivant les données en A4 (CP ou M al) A5
> et A6 (date debut et fin), la macro vient remplacer entre les dates pr écitées
> les valeurs des cellules concernées par CP ou MAL .
>
> J'aimerais ameliorer cette macro pour que les cellules vides avant
> remplacement soit remplacées par "cp" (en minuscules) ou "Mld" et les cases
> qui a l'origine n'étaient pas vides soient remplacées par "CP" (en
> majuscules) ou "Mal". puis une fois cela fait, il faudrait que cette li gne
> (B13:AF13) soit recopiée dans l'onglet indiqué en A2 de l'onglet CP -MAL(
> Janvier dans l'exemple envoyé) sur la ligne de la personne citée en A3 de
> l'onglet CP-MAL (Merillou dans l'exemple)
>
> Dans le fichier envoyé en A2 "Janvier" en A3 "Merillou"
> La macro doit trouver la ligne de Merillou dans l'onglet "Janvier" et
> recopier sur cette ligne entre B et AF les valeurs de la ligne B13:AF13 de
> l'ongler CP-MAL .
>
> En gros on copie les cellules du planning d'origine on modifie et on me t les
> nouvelles données dans le planning
>
> J'espere que cela paraitra clair... Merci encore de l'aide que vous vou drez
> bien m'accorder... Lionel

Bonjour,
dans B9 :
=INDEX(INDIRECT($A$2&"!$B6:$AX146");(EQUIV($A$3;nom;0)-1)*5+1;COLONNE() -1)
"nom" n'est pas un nom défini. Est-ce normal ?
Cordialement.
Daniel



Bonjour Daniel,

Nom fait reference à la liste des personnels ... voir gerer les noms... c 'est bien normal...
Lionel
Avatar
Jacquouille
Bonjour Daniel

Je suis plutôt pro-formule que macrotiste.
Mais, dans ce cas, un filet de macro ne siérait-il pas mieux? je parle de la
ligne B9:AF9 de CP-MAL!

De plus, on demande des trucs, mais on cache une feuille "paramètre" que mon
2003 a bien du mal à trouver.

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"DanielCo" a écrit dans le message de groupe de discussion :
56b72cb5$0$3045$

Rebonsoir,

Je recommence l'explication à zero...

http://www.cjoint.com/c/FBgxRP4RgIr

Dans l'onglet CP-MAL
Les cellules B9:AF9 sont "indexées" sur les cellules de l'onglet spécifiée
par la cellule A2 (mois) et A3 (Nom)

je lance la macro (macro1) de cette feuille qui vient copier cette ligne 9
pour la recopier en ligne 13. puis suivant les données en A4 (CP ou Mal)
A5 et A6 (date debut et fin), la macro vient remplacer entre les dates
précitées les valeurs des cellules concernées par CP ou MAL .

J'aimerais ameliorer cette macro pour que les cellules vides avant
remplacement soit remplacées par "cp" (en minuscules) ou "Mld" et les
cases qui a l'origine n'étaient pas vides soient remplacées par "CP" (en
majuscules) ou "Mal". puis une fois cela fait, il faudrait que cette ligne
(B13:AF13) soit recopiée dans l'onglet indiqué en A2 de l'onglet CP-MAL(
Janvier dans l'exemple envoyé) sur la ligne de la personne citée en A3 de
l'onglet CP-MAL (Merillou dans l'exemple)

Dans le fichier envoyé en A2 "Janvier" en A3 "Merillou"
La macro doit trouver la ligne de Merillou dans l'onglet "Janvier" et
recopier sur cette ligne entre B et AF les valeurs de la ligne B13:AF13 de
l'ongler CP-MAL .

En gros on copie les cellules du planning d'origine on modifie et on met
les nouvelles données dans le planning

J'espere que cela paraitra clair... Merci encore de l'aide que vous
voudrez bien m'accorder... Lionel



Bonjour,
dans B9 :
=INDEX(INDIRECT($A$2&"!$B6:$AX146");(EQUIV($A$3;nom;0)-1)*5+1;COLONNE()-1)
"nom" n'est pas un nom défini. Est-ce normal ?
Cordialement.
Daniel


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
DanielCo
Le dimanche 7 février 2016 12:38:31 UTC+1, DanielCo a écrit :
Rebonsoir,

Je recommence l'explication à zero...

http://www.cjoint.com/c/FBgxRP4RgIr

Dans l'onglet CP-MAL
Les cellules B9:AF9 sont "indexées" sur les cellules de l'onglet spécifiée
par la cellule A2 (mois) et A3 (Nom)

je lance la macro (macro1) de cette feuille qui vient copier cette ligne 9
pour la recopier en ligne 13. puis suivant les données en A4 (CP ou Mal) A5
et A6 (date debut et fin), la macro vient remplacer entre les dates
précitées les valeurs des cellules concernées par CP ou MAL .

J'aimerais ameliorer cette macro pour que les cellules vides avant
remplacement soit remplacées par "cp" (en minuscules) ou "Mld" et les cases
qui a l'origine n'étaient pas vides soient remplacées par "CP" (en
majuscules) ou "Mal". puis une fois cela fait, il faudrait que cette ligne
(B13:AF13) soit recopiée dans l'onglet indiqué en A2 de l'onglet CP-MAL(
Janvier dans l'exemple envoyé) sur la ligne de la personne citée en A3 de
l'onglet CP-MAL (Merillou dans l'exemple)

Dans le fichier envoyé en A2 "Janvier" en A3 "Merillou"
La macro doit trouver la ligne de Merillou dans l'onglet "Janvier" et
recopier sur cette ligne entre B et AF les valeurs de la ligne B13:AF13 de
l'ongler CP-MAL .

En gros on copie les cellules du planning d'origine on modifie et on met
les nouvelles données dans le planning

J'espere que cela paraitra clair... Merci encore de l'aide que vous voudrez
bien m'accorder... Lionel



Bonjour,
dans B9 :
=INDEX(INDIRECT($A$2&"!$B6:$AX146");(EQUIV($A$3;nom;0)-1)*5+1;COLONNE()-1)
"nom" n'est pas un nom défini. Est-ce normal ?
Cordialement.
Daniel



Bonjour Daniel,

Nom fait reference à la liste des personnels ... voir gerer les noms... c'est
bien normal... Lionel



Non, pas de nom "nom" :
http://www.cjoint.com/c/FBhnSg5yXyv
De plus les cellules à partir de C9 renvoient "#REF!".
Daniel
Avatar
Lionel M
Le dimanche 7 février 2016 14:49:18 UTC+1, DanielCo a écrit :
> Le dimanche 7 février 2016 12:38:31 UTC+1, DanielCo a écrit :
>>> Rebonsoir,
>>>
>>> Je recommence l'explication à zero...
>>>
>>> http://www.cjoint.com/c/FBgxRP4RgIr
>>>
>>> Dans l'onglet CP-MAL
>>> Les cellules B9:AF9 sont "indexées" sur les cellules de l'onglet sp écifiée
>>> par la cellule A2 (mois) et A3 (Nom)
>>>
>>> je lance la macro (macro1) de cette feuille qui vient copier cette li gne 9
>>> pour la recopier en ligne 13. puis suivant les données en A4 (CP ou Mal) A5
>>> et A6 (date debut et fin), la macro vient remplacer entre les dates
>>> précitées les valeurs des cellules concernées par CP ou MAL .
>>>
>>> J'aimerais ameliorer cette macro pour que les cellules vides avant
>>> remplacement soit remplacées par "cp" (en minuscules) ou "Mld" et l es cases
>>> qui a l'origine n'étaient pas vides soient remplacées par "CP" (e n
>>> majuscules) ou "Mal". puis une fois cela fait, il faudrait que cette ligne
>>> (B13:AF13) soit recopiée dans l'onglet indiqué en A2 de l'onglet CP-MAL(
>>> Janvier dans l'exemple envoyé) sur la ligne de la personne citée en A3 de
>>> l'onglet CP-MAL (Merillou dans l'exemple)
>>>
>>> Dans le fichier envoyé en A2 "Janvier" en A3 "Merillou"
>>> La macro doit trouver la ligne de Merillou dans l'onglet "Janvier" et
>>> recopier sur cette ligne entre B et AF les valeurs de la ligne B13:AF 13 de
>>> l'ongler CP-MAL .
>>>
>>> En gros on copie les cellules du planning d'origine on modifie et on met
>>> les nouvelles données dans le planning
>>>
>>> J'espere que cela paraitra clair... Merci encore de l'aide que vous v oudrez
>>> bien m'accorder... Lionel
>>
>> Bonjour,
>> dans B9 :
>> =INDEX(INDIRECT($A$2&"!$B6:$AX146");(EQUIV($A$3;nom;0)-1)*5+1;COLONN E()-1)
>> "nom" n'est pas un nom défini. Est-ce normal ?
>> Cordialement.
>> Daniel
>
> Bonjour Daniel,
>
> Nom fait reference à la liste des personnels ... voir gerer les noms. .. c'est
> bien normal... Lionel

Non, pas de nom "nom" :
http://www.cjoint.com/c/FBhnSg5yXyv
De plus les cellules à partir de C9 renvoient "#REF!".
Daniel



Ce sera peut plus clair en utilisant le meme fichier ...
http://www.cjoint.com/c/FBhovPYV2Lr
Avatar
MichD
À partir ce que j'ai compris, voici une macro qui remplacera ta macro1

Le code est commenté, tu devras te débrouiller avec ceci!

'-----------------------------------------------------
Sub test()

Dim C As Range, T As Variant
Dim Col1 As Long, Col2 As Long, A As Long
Dim Ligne As Long

Application.ScreenUpdating = False
Application.EnableEvents = False

'À partir de la feuille Janvier
With Worksheets("Janvier")
'Trouve la ligne correspondant à Marilou
Ligne = Application.Match(Worksheets("CP-Mal").Range("A3"),
.Range("A:A"), 0)

'met dans un tableau, les données de la ligne qui correspond à Marilou
'ce qui permet de copier seulement les données sans le format
T = Range(.Cells(Ligne, 2), .Cells(Ligne, .Range("AF1").Column)).Value
End With

'Dans la feuille CP-MAL
With Worksheets("CP-MAL")
'copie les valeurs du tableau vers la plage de destination
.Range("B13").Resize(, UBound(T, 2)).Value = T

'Détermine la colonne de la date de départ, auquel il faut
Col1 = Application.Match(.Range("A5"), .Rows(8), 0)

'Détermine la colonne de la date de fin, auquel il faut
Col2 = Application.Match(.Range("A6"), .Rows(8), 0)

'Remplacement des données par CP ou cp
'une boucle sur chacune des cellules entre ces 2 dates inclusivement
For Each C In .Range(.Cells(13, Col1), .Cells(13, Col2)).Cells
'Test pour chacune des cellules entre les 2 dates spécifiées
'dans les cellules A5 et A6
'Le Offfset déplace d'une cellule vers la droite à
'chaque boucle sur la ligne 13
If C.Offset(, A).Value = 0 Then
C.Offset(, A) = "cp"
Else
C.Offset(, A) = "CP"
End If

Next
End With
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'-----------------------------------------------------
Avatar
MichD
C'est la même macro que précédemment, mais avec une gestion d'erreur au
cas qu'une donnée dans les cellules A2:A6 ne soit pas disponible pour les
recherches.

'-------------------------------------------------------------------------------------
Sub test()

Dim C As Range, T As Variant
Dim Col1 As Variant, Col2 As Variant, A As Long
Dim Ligne As Variant

On Error Resume Next
'À partir de la feuille Janvier
With Worksheets("Janvier")
'Trouve la ligne correspondant à Marilou
Ligne = Application.Match(Worksheets("CP-Mal").Range("A3"), .Range("A:A"), 0)
'Si le nom cherché n'existe pas dans la feuille
If IsError(Ligne) Then
'efface l'erreur
Err = 0
'Message à l'endroit de l'usager
MsgBox "Le nom """ & .Range("A3") & "" & "n 'existe pas dans " & _
"la feuille """ & .Range("A2") & """ & en colonne A. Corriger!"
'Fin de la procédure
Exit Sub
End If
'met dans un tableau, les données de la ligne qui correspond à Marilou
'ce qui permet de copier seulement les données sans le format
T = .Range(.Cells(Ligne, 2), .Cells(Ligne, .Range("AF1").Column)).Value
End With

'Dans la feuille CP-MAL
With Worksheets("CP-MAL")
'Détermine la colonne de la date de départ, auquel il faut
Col1 = Application.Match(.Range("A5"), .Rows(8), 0)
If IsError(Col1) Then
Err = 0
MsgBox "Il y a un problème avec la date mentionnée en A5 de la feuille CP-MAL. Corriger!"
Exit Sub
End If

'Détermine la colonne de la date de fin, auquel il faut
Col2 = Application.Match(.Range("A6"), .Rows(8), 0)
If IsError(Col2) Then
Err = 0
MsgBox "Il y a un problème avec la date mentionnée en A5 de la feuille CP-MAL. Corriger!"
Exit Sub
End If

Application.ScreenUpdating = False
Application.EnableEvents = False

'copie les valeurs du tableau vers la plage de destination
.Range("B13").Resize(, UBound(T, 2)).Value = T

'Remplacement des données par CP ou cp
'une boucle sur chacune des cellules entre ces 2 dates inclusivement
For Each C In .Range(.Cells(13, Col1), .Cells(13, Col2)).Cells
'Test pour chacune des cellules entre les 2 dates spécifiées
'dans les cellules A5 et A6
'Le Offfset déplace d'une cellule vers la droite à
'chaque boucle sur la ligne 13
If C.Offset(, A).Value = 0 Then
C.Offset(, A) = "cp"
Else
C.Offset(, A) = "CP"
End If
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End With
End Sub
'-------------------------------------------------------------------------------------
1 2 3 4 5