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

RECHERCHE

13 réponses
Avatar
Sunburn
Bonjour,
j'ai un classeur avec une quarantaine de page.
Je veux en fait un tableau récapitulatif, à chaque fois qu'il trouve l'un
des 4 éléments suivants (EXP, CAC, FI, FC), qui se situent dans la plage
E8:E38 de chaque page, en prenant divers éléments.

Je voudrais, que mon tableau soit structuré comme suit : en colonne A, la
valeur de la cellule C10 de la feuille 1 (texte), en colonne B, la valeur de
la cellule C11 de la feuille 1 (texte) (mais seulement si la colonne C n'est
pas vide)
, en colonne C, les valeurs cherchées (EXP,CAC,FI,FC), en colonne D la
valeur B8:B38 correspondante (date), en colonne E la valeur J8:J38
correspondante (nombre), et en colonne F la valeur L8:L38 correspondante
(texte).

Ext ce possible à faire en macro. il faut en fait faire un test sur toutes
les feuilles, exceptées celle sur laquelle je travail, et copier les infos en
décalant d'une ligne à chaque fois. C'est faisable?
Merci à vous tous.
Yann

10 réponses

1 2
Avatar
Youky
Je suis pas sur d'avoir bien tout pigé
tu doit créer une feuille "Récap" avant de lancer la macro
la feuille texte et Récap ne sont pas testées
Youky
Private Sub CommandButton1_Click()
Dim ok As Boolean
Sheets("Récap").Cells.Clear
Sheets("Récap").[A1] = Sheets("texte").[C10]
Sheets("Récap").[B1] = Sheets("texte").[C11]
For k = 1 To Sheets.Count
If Sheets(k).Name = "texte" Then Exit For
If Sheets(k).Name = "Récap" Then Exit For
For Each c In Sheets(k).[E8:E38]
If c.Value = "EXP" Then ok = True
If c.Value = "CAC" Then ok = True
If c.Value = "FI" Then ok = True
If c.Value = "FC" Then ok = True
If ok = True Then
ok = False
lig = Sheets("Récap").Range("B65536").End(xlUp).Row
Sheets("Récap").Range("C" & lig) = c.Value
Sheets("Récap").Range("D" & lig) = Sheets(k).Range("B" & c.Row)
Sheets("Récap").Range("E" & lig) = Sheets(k).Range("J" & c.Row)
Sheets("Récap").Range("F" & lig) = Sheets(k).Range("L" & c.Row)
End If
Next
Next
End Sub

"Sunburn" a écrit dans le message de
news:
Bonjour,
j'ai un classeur avec une quarantaine de page.
Je veux en fait un tableau récapitulatif, à chaque fois qu'il trouve l'un
des 4 éléments suivants (EXP, CAC, FI, FC), qui se situent dans la plage
E8:E38 de chaque page, en prenant divers éléments.

Je voudrais, que mon tableau soit structuré comme suit : en colonne A, la
valeur de la cellule C10 de la feuille 1 (texte), en colonne B, la valeur
de
la cellule C11 de la feuille 1 (texte) (mais seulement si la colonne C
n'est
pas vide)
, en colonne C, les valeurs cherchées (EXP,CAC,FI,FC), en colonne D la
valeur B8:B38 correspondante (date), en colonne E la valeur J8:J38
correspondante (nombre), et en colonne F la valeur L8:L38 correspondante
(texte).

Ext ce possible à faire en macro. il faut en fait faire un test sur toutes
les feuilles, exceptées celle sur laquelle je travail, et copier les infos
en
décalant d'une ligne à chaque fois. C'est faisable?
Merci à vous tous.
Yann


Avatar
Sunburn
Salut
en fait ça ne fonctionne pas. Je vais essayer d'etre plus précis.
Je voudrais que mon tableau récap ("Formation" chez moi) regroupe les infos
sur le nombre de lignes nécessaires.
c'est à dire que si dans mes autres pages, j'ai en tout 15 fois l'un de mes
4 arguments, alors, il me sort un tableau avec 15 lignes, avec en colonne C
les arguments trouvés, en colonne A, les données de C10 feuille "Info" chez
moi, en colonne B les données de C11 feuille "Info", seulement si la colonne
C est non vide.
puis dans mes colonnes D à F, les infos qui correspondent aux arguments
cherchés, mais sur les colonnes respectives B, J, L.

Par exemple, s'il y a EXP en E12 de la feuille 6, alors, il met en colonne C
"EXP", en colonne D la valeur de B12 de la feuille 6, en colonne E la valeur
de J12 de la feuille 6, en colonne F la valeur de L12 de la feuille 6.
Et ainsi de suite, en faisant une boucle pour toutes les feuilles, sauf ma
feuille "Formation".
Mais je sais pas faire les boucles,. ça doit être faisable je pense.
Merci.
Yann
Avatar
Youky
j'ai pas changé grande chose mais cela doit marcher
à condition que tu es une feuille nommée Récap et une feuille "Info pour
extraire C10 ou C11(si c11 est vide Récap!B1 auusi)
si ca va toujours pas mets un exemple en fichier joint car je pige pas
Youky

Private Sub CommandButton1_Click()
Dim ok As Boolean
Sheets("Récap").Cells.Clear
Sheets("Récap").[A1] = Sheets("Info").[C10]
Sheets("Récap").[B1] = Sheets("Info").[C11]
For k = 1 To Sheets.Count
If Sheets(k).Name = "Info" Then Exit For
If Sheets(k).Name = "Récap" Then Exit For
For Each c In Sheets(k).[E8:E38]
If c.Value = "EXP" Then ok = True
If c.Value = "CAC" Then ok = True
If c.Value = "FI" Then ok = True
If c.Value = "FC" Then ok = True
If ok = True Then
ok = False
lig = Sheets("Récap").Range("C65536").End(xlUp).Row
Sheets("Récap").Range("C" & lig) = c.Value
Sheets("Récap").Range("D" & lig) = Sheets(k).Range("B" & c.Row)
Sheets("Récap").Range("E" & lig) = Sheets(k).Range("J" & c.Row)
Sheets("Récap").Range("F" & lig) = Sheets(k).Range("L" & c.Row)
End If
Next
Next
End Sub


"Sunburn" a écrit dans le message de
news:
Salut
en fait ça ne fonctionne pas. Je vais essayer d'etre plus précis.
Je voudrais que mon tableau récap ("Formation" chez moi) regroupe les
infos
sur le nombre de lignes nécessaires.
c'est à dire que si dans mes autres pages, j'ai en tout 15 fois l'un de
mes
4 arguments, alors, il me sort un tableau avec 15 lignes, avec en colonne
C
les arguments trouvés, en colonne A, les données de C10 feuille "Info"
chez
moi, en colonne B les données de C11 feuille "Info", seulement si la
colonne
C est non vide.
puis dans mes colonnes D à F, les infos qui correspondent aux arguments
cherchés, mais sur les colonnes respectives B, J, L.

Par exemple, s'il y a EXP en E12 de la feuille 6, alors, il met en colonne
C
"EXP", en colonne D la valeur de B12 de la feuille 6, en colonne E la
valeur
de J12 de la feuille 6, en colonne F la valeur de L12 de la feuille 6.
Et ainsi de suite, en faisant une boucle pour toutes les feuilles, sauf ma
feuille "Formation".
Mais je sais pas faire les boucles,. ça doit être faisable je pense.
Merci.
Yann


Avatar
Sunburn
Re,

http://cjoint.com/?jCn2YLODcM

voici un fichier exemple.
Sur la page "formation", j'aimis le résultat que je voudrais obtenir. tu
verras, les feuilles sont complétée.
Merci si tu peux quelque chose pour moi.
Yann
Avatar
Youky
voici Yann et en plus testé
Youky
Sub Récap()
Dim ok As Boolean
Sheets("Formation").Cells.Clear
Sheets("Formation").[A1] = Sheets("Info").[C10]
Sheets("Formation").[B1] = Sheets("Info").[C11]
For k = 1 To Sheets.Count
If Sheets(k).Name = "Info" Then GoTo saute
If Sheets(k).Name = "Formation" Then GoTo saute
For Each c In Sheets(k).[E8:E38]
If c.Value = "EXP" Then ok = True
If c.Value = "CAC" Then ok = True
If c.Value = "FI" Then ok = True
If c.Value = "FC" Then ok = True
If ok = True Then
ok = False
lig = lig + 1
Sheets("Formation").Range("A" & lig) = Sheets("Formation").[A1]
Sheets("Formation").Range("B" & lig) = Sheets("Formation").[B1]
Sheets("Formation").Range("C" & lig) = c.Value
Sheets("Formation").Range("D" & lig) = Sheets(k).Range("B" & c.Row)
Sheets("Formation").Range("E" & lig) = Sheets(k).Range("J" & c.Row)
Sheets("Formation").Range("F" & lig) = Sheets(k).Range("L" & c.Row)
End If
Next
saute:
Next
End Sub

"Sunburn" a écrit dans le message de
news:
Re,

http://cjoint.com/?jCn2YLODcM

voici un fichier exemple.
Sur la page "formation", j'aimis le résultat que je voudrais obtenir. tu
verras, les feuilles sont complétée.
Merci si tu peux quelque chose pour moi.
Yann


Avatar
Sunburn
OK c cool, c d'enfer, Trop Merci.
Le dernier petit truc, c'est que mes valeurs de la colonne D sont en fait
des dates au format JJ/MM/AA.
comment faire pour imposer ce format avec la macro?

Merci Beaucoup
Yann
Avatar
Youky
Next
Sheets("Formation").Columns("D:D").NumberFormat = "dd/mm/yy"
End Sub

rajoute la ligne avant End Sub
Youky
Avatar
Sunburn
Merci, ça fonctionne.
Yann
Avatar
Sunburn
Juste un dernier petit truc.
Est-ce possible de ne pas effacer les données à chaque fois que la macro
s'exécute, mais seulement de rajouter ce qui n'existe pas. Par exemple,
prendre la date (colonne D) pour savoir s'il faut rajouter ou pas. car je
voudrais rajouter des donées à saisir dans les colonnes G à L, et ne pas les
supprimer.

Merci si c'est faisable.
Yann
Avatar
Youky
Tu peux rajouter un ou plusieur jour, rien n'est effacé, j'insert une ligne
si la date est <
mais pas prévu si tu enleves un jour, je verrais plus tard
Sub Récap()
Dim ok As Boolean
For k = 1 To Sheets.Count
If Sheets(k).Name = "Info" Then GoTo saute
If Sheets(k).Name = "Formation" Then GoTo saute
For Each c In Sheets(k).[E8:E38]
If c.Value = "EXP" Then ok = True
If c.Value = "CAC" Then ok = True
If c.Value = "FI" Then ok = True
If c.Value = "FC" Then ok = True
If ok = True Then
ok = False
lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
End If
Sheets("Formation").Range("A" & lig) = Sheets("Info").[C10]
Sheets("Formation").Range("B" & lig) = Sheets("Info").[C11]
Sheets("Formation").Range("C" & lig) = c.Value
Sheets("Formation").Range("D" & lig) = Sheets(k).Range("B" & c.Row)
Sheets("Formation").Range("E" & lig) = Sheets(k).Range("J" & c.Row)
Sheets("Formation").Range("F" & lig) = Sheets(k).Range("L" & c.Row)
End If
Next
saute:
Next
Sheets("Formation").Columns("D:D").NumberFormat = "dd/mm/yy"
End Sub

"Sunburn" a écrit dans le message de
news:
Juste un dernier petit truc.
Est-ce possible de ne pas effacer les données à chaque fois que la macro
s'exécute, mais seulement de rajouter ce qui n'existe pas. Par exemple,
prendre la date (colonne D) pour savoir s'il faut rajouter ou pas. car je
voudrais rajouter des donées à saisir dans les colonnes G à L, et ne pas
les
supprimer.

Merci si c'est faisable.
Yann


1 2