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

copier vers un autre fichier

4 réponses
Avatar
bobaskis
slt,
un prb de reporting avec macros.
Soit un premier fichier qui contient la liste des mois Janvier à Décembre
dans a1:a12(fichier1, feuil1)

Soit un deuxième fichier, feuil2, cellule qui A1 peut contenir soit janvier
soit février soit mars...jusqu'à décembre et en B1 un total. (ici je n'écris
que dans la cellule A1 et B1)
Mon prb : je dois exporter le total de B1 dans le premier fichier et dans le
mois correspondant. Comment "repérer" le mois ?
Autrement dit :
si fichier2/feuil2/a1=janvier alors écrire dans fichier1/feuil1/b1,
si fichier2/feuil2/a1=février alors écrire dans fichier1/feuil1/b2,
si fichier2/feuil2/a1=mars alors écrire dans fichier1/feuil1/b3...
est-il possible de faire ça sans imbriquer 12 fonction In...End if ?
merci
a+

4 réponses

Avatar
FdeCourt
Salut,

Il va bien falloir determiner dans quelle colonne tu vas mettre le
résultat, et comme cela dépend du mois, il faudrat l'indiquer à Excel
(pas sur qu'il sache que "mars" est 3, ou "décembre" = 12)

Au lieu de faire de If, tu peux utiliser Select Case :

Select Case LCase(Cells(1, 1).Value)
Case "janvier": col = 1
Case "février": col = 2
Case "mars": col = 3
Case "avril": col = 4
Case "mai": col = 5
Case "juin": col = 6
Case "juillet": col = 7
Case "aout": col = 8
Case "septembre": col = 9
Case "octobre": col = 10
Case "novembre": col = 11
Case "decembre": col = 12
End Select

Ici, col represente une variable qui indique dans quel colonne mettre
le résultat.
Le chemin d'acces des cellules ne doit plus être B1 dans ton code,
comme range("B1"), mais Cells(1, 2), ou tu remplacerais le 2 par col.

Cordialement,

F.
Avatar
boblebob
slt et merci pour cette réponse,
n'y aurait-il pas la possibilité de faire un truc du style RechercheV ce qui
prendrait moins de place dans le code ?
a+
"FdeCourt" a écrit dans le message de news:

Salut,

Il va bien falloir determiner dans quelle colonne tu vas mettre le
résultat, et comme cela dépend du mois, il faudrat l'indiquer à Excel
(pas sur qu'il sache que "mars" est 3, ou "décembre" = 12)

Au lieu de faire de If, tu peux utiliser Select Case :

Select Case LCase(Cells(1, 1).Value)
Case "janvier": col = 1
Case "février": col = 2
Case "mars": col = 3
Case "avril": col = 4
Case "mai": col = 5
Case "juin": col = 6
Case "juillet": col = 7
Case "aout": col = 8
Case "septembre": col = 9
Case "octobre": col = 10
Case "novembre": col = 11
Case "decembre": col = 12
End Select

Ici, col represente une variable qui indique dans quel colonne mettre
le résultat.
Le chemin d'acces des cellules ne doit plus être B1 dans ton code,
comme range("B1"), mais Cells(1, 2), ou tu remplacerais le 2 par col.

Cordialement,

F.
Avatar
FdeCourt
Tu as la possibilité de faire une recherche :

quoi = Sheets("feuil2").Cells(1, 1).Value
On Error Resume Next
col = Sheets("Feuil1").Range("A1:L1").Find(quoi,
Sheets("Feuil1").Range("A1"), _
xlFormulas, xlWhole, xlByColumns, xlNext, False, False).Column
If Err <> 0 Then MsgBox "Colonne non trouvée"

Les paramètre de Find peuvent être simplifiés, mais dans ce cas cela
prend les paramêtre de la dernière recherche, ce qui peut être génan
(tous les mettre te permet de bien les controler).

Cordialement,

F.
Avatar
Jacques ALARDET
Bonjour,

Je te propose une fonction simple, sans IF, ni CASE, ni boucle


Function Indice_mois(Mois As String) As Integer
'_Calculer l'indice d'un mois
Indice_mois = Month(CVDate(1 & " " & Mois & "
2000"))
End Function

J a c q u e s

"bobaskis" a écrit dans le message de
news:
slt,
un prb de reporting avec macros.
Soit un premier fichier qui contient la liste des mois Janvier à Décembre
dans a1:a12(fichier1, feuil1)

Soit un deuxième fichier, feuil2, cellule qui A1 peut contenir soit
janvier
soit février soit mars...jusqu'à décembre et en B1 un total. (ici je
n'écris
que dans la cellule A1 et B1)
Mon prb : je dois exporter le total de B1 dans le premier fichier et dans
le
mois correspondant. Comment "repérer" le mois ?
Autrement dit :
si fichier2/feuil2/a1=janvier alors écrire dans fichier1/feuil1/b1,
si fichier2/feuil2/a1=février alors écrire dans fichier1/feuil1/b2,
si fichier2/feuil2/a1=mars alors écrire dans fichier1/feuil1/b3...
est-il possible de faire ça sans imbriquer 12 fonction In...End if ?
merci
a+