• Initiateur de la discussion Initiateur de la discussion al1000
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

al1000

XLDnaute Impliqué
bonjour,

Voici ma macro et je voudrai simplifier la fin de la macro.

comment faire pout eviter d'ecrire les 52 lignes?

la macro:
Range("i36:i89").Select

Selection.Copy

Sheets("recap sem").Select




semaine = InputBox("Quel semaine svp ", "1;2;3;4;5;....etc")

Range("aa1") = semaine
Range("aa1").Select
For Each cell In Selection

cell.Formula = LCase(cell.Formula)
Next cell
If Range("aa1") = "1" Then Range("c36").Select
If Range("aa1") = "2" Then Range("d36").Select
If Range("aa1") = "3" Then Range("e36").Select
If Range("aa1") = "4" Then Range("f36").Select
If Range("aa1") = "5" Then Range("g36").Select
If Range("aa1") = "6" Then Range("h36").Select
If Range("aa1") = "7" Then Range("i36").Select
If Range("aa1") = "8" Then Range("j36").Select
If Range("aa1") = "9" Then Range("k36").Select
If Range("aa1") = "10" Then Range("l36").Select
If Range("aa1") = "11" Then Range("m36").Select
If Range("aa1") = "12" Then Range("n36").Select
If Range("aa1") = "13" Then Range("o36").Select
If Range("aa1") = "14" Then Range("p36").Select
If Range("aa1") = "15" Then Range("q36").Select
If Range("aa1") = "16" Then Range("r36").Select
If Range("aa1") = "17" Then Range("s36").Select
If Range("aa1") = "18" Then Range("t36").Select
If Range("aa1") = "19" Then Range("u36").Select
If Range("aa1") = "20" Then Range("v36").Select
If Range("aa1") = "21" Then Range("w36").Select
If Range("aa1") = "22" Then Range("x36").Select
If Range("aa1") = "23" Then Range("y36").Select
If Range("aa1") = "24" Then Range("z36").Select
If Range("aa1") = "25" Then Range("aa36").Select
If Range("aa1") = "26" Then Range("ab36").Select
If Range("aa1") = "27" Then Range("ac36").Select
If Range("aa1") = "28" Then Range("ad36").Select
If Range("aa1") = "29" Then Range("ae36").Select
If Range("aa1") = "30" Then Range("af36").Select
If Range("aa1") = "31" Then Range("ag36").Select
If Range("aa1") = "32" Then Range("ah36").Select
If Range("aa1") = "33" Then Range("ai36").Select
If Range("aa1") = "34" Then Range("aj36").Select
If Range("aa1") = "35" Then Range("ak36").Select
If Range("aa1") = "36" Then Range("al36").Select
If Range("aa1") = "37" Then Range("am36").Select
If Range("aa1") = "38" Then Range("an36").Select
If Range("aa1") = "39" Then Range("ao36").Select
If Range("aa1") = "40" Then Range("ap36").Select
If Range("aa1") = "41" Then Range("aq36").Select
If Range("aa1") = "42" Then Range("ar36").Select
If Range("aa1") = "43" Then Range("as36").Select
If Range("aa1") = "44" Then Range("at36").Select
If Range("aa1") = "45" Then Range("au36").Select
If Range("aa1") = "46" Then Range("av36").Select
If Range("aa1") = "47" Then Range("aw36").Select
If Range("aa1") = "48" Then Range("ax36").Select
If Range("aa1") = "49" Then Range("ay36").Select
If Range("aa1") = "50" Then Range("az36").Select
If Range("aa1") = "51" Then Range("ba36").Select
If Range("aa1") = "52" Then Range("bb36").Select



Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A29").Select


End Sub
 
Re : macro

Bonjour

essaies en remplaçant


If Range("aa1") = "1" Then Range("c36").Select
If Range("aa1") = "2" Then Range("d36").Select
If Range("aa1") = "3" Then Range("e36").Select
If Range("aa1") = "4" Then Range("f36").Select
If Range("aa1") = "5" Then Range("g36").Select
If Range("aa1") = "6" Then Range("h36").Select
If Range("aa1") = "7" Then Range("i36").Select
If Range("aa1") = "8" Then Range("j36").Select
If Range("aa1") = "9" Then Range("k36").Select
If Range("aa1") = "10" Then Range("l36").Select
If Range("aa1") = "11" Then Range("m36").Select
If Range("aa1") = "12" Then Range("n36").Select
If Range("aa1") = "13" Then Range("o36").Select
If Range("aa1") = "14" Then Range("p36").Select
If Range("aa1") = "15" Then Range("q36").Select
If Range("aa1") = "16" Then Range("r36").Select
If Range("aa1") = "17" Then Range("s36").Select
If Range("aa1") = "18" Then Range("t36").Select
If Range("aa1") = "19" Then Range("u36").Select
If Range("aa1") = "20" Then Range("v36").Select
If Range("aa1") = "21" Then Range("w36").Select
If Range("aa1") = "22" Then Range("x36").Select
If Range("aa1") = "23" Then Range("y36").Select
If Range("aa1") = "24" Then Range("z36").Select
If Range("aa1") = "25" Then Range("aa36").Select
If Range("aa1") = "26" Then Range("ab36").Select
If Range("aa1") = "27" Then Range("ac36").Select
If Range("aa1") = "28" Then Range("ad36").Select
If Range("aa1") = "29" Then Range("ae36").Select
If Range("aa1") = "30" Then Range("af36").Select
If Range("aa1") = "31" Then Range("ag36").Select
If Range("aa1") = "32" Then Range("ah36").Select
If Range("aa1") = "33" Then Range("ai36").Select
If Range("aa1") = "34" Then Range("aj36").Select
If Range("aa1") = "35" Then Range("ak36").Select
If Range("aa1") = "36" Then Range("al36").Select
If Range("aa1") = "37" Then Range("am36").Select
If Range("aa1") = "38" Then Range("an36").Select
If Range("aa1") = "39" Then Range("ao36").Select
If Range("aa1") = "40" Then Range("ap36").Select
If Range("aa1") = "41" Then Range("aq36").Select
If Range("aa1") = "42" Then Range("ar36").Select
If Range("aa1") = "43" Then Range("as36").Select
If Range("aa1") = "44" Then Range("at36").Select
If Range("aa1") = "45" Then Range("au36").Select
If Range("aa1") = "46" Then Range("av36").Select
If Range("aa1") = "47" Then Range("aw36").Select
If Range("aa1") = "48" Then Range("ax36").Select
If Range("aa1") = "49" Then Range("ay36").Select
If Range("aa1") = "50" Then Range("az36").Select
If Range("aa1") = "51" Then Range("ba36").Select
If Range("aa1") = "52" Then Range("bb36").Select

Par

cells(36,val(range("AA1"))+2).select
 
Re : macro

Bonjour,

La macro suivante devrait pouvoir remplacer la tienne :

Sub test()
semaine = InputBox("Quel semaine svp ", "1;2;3;4;5;....etc")
Range("i36:i89").Copy
Sheets("recap sem").Select
Range("c36").Offset(0, semaine - 1).PasteSpecial Paste:=xlPasteValues
End Sub


Je n'ai pas compris le LCase ...
 
Dernière édition:
Re : macro

bonjour al1000

a tester:
Code:
Range("i36:i89").Select
Selection.Copy
Sheets("recap sem").Select
semaine = InputBox("Quel semaine svp ", "1;2;3;4;5;....etc")
Range("aa1") = semaine
 
Cells(36, Chr(CInt(semaine) + 66)).Select
 
Selection.PasteSpecial Paste:=xlPasteValues
Range("A29").select

edit:

bojour a tous
avais pas rafraichi !!
 
Re : macro

re

Merci pour le genial

semaine est un string donc Cint (semaine ) pour avoir un chiffre
ensuite Chr donne le caractere A pour 65 B pour 66 etc

personnellement je trouve que la solution de Catrice avec Offset est nettement meilleure

mais chacun ses gouts
 
Re : macro

bonjour,

je voudrai le meme type de macro (qui demande pour quelle N° semaine il faut recopier la cellule )

mais au lieu que les semaines sont en horizontal,
les semaine sont en vertical

comment faire pour modifier la macro?

cells(.......

a+
 
Re : macro

Salut à tous,

J'ai regardé vite fait mais avec Cells(36, Chr(CInt(semaine) + 66)).Select

Est ce qu'on gere les colonnes AA, AB ... ?

J'opterai plutot pour :
Cells(36, 2 + semaine)).Select
Si Semaine = 1 => colonne 3 => Colonne C
Si Semaine = 2 => colonne 4 => Colonne D
etc ...
NB - Cells(N°Ligne,N°Colonne)

Plus simple, non ?

Et tout mettre sur la meme ligne :
Cells(36, 2 + semaine)).PasteSpecial Paste:=xlPasteValues

Ca evite le Select
 
Dernière édition:
Re : macro

bonjour

vous etes des pros; mais moi je suis qu'un novice je me debrouille mais il faut me donner des explications
ce soir ou demain j'essaye; je pense que cela marche
mais j'aime bien comprendre le code

string=..
Cint=...

a+
 
Re : macro

Re,

Je peux t'expliquer ma version :
Sub test()
semaine = InputBox("Quel semaine svp ", "1;2;3;4;5;....etc")
Range("i36:i89").Copy
Sheets("recap sem").Select
Range("c36").Offset(0, semaine - 1).PasteSpecial Paste:=xlPasteValues
End Sub

Semaine contient la valeur saisie par l'utilisateur (1, 2 , 3 etc ...)
Range("i36:i89").Copy => On copy la zone souhaitée
Sheets("recap sem").Select => On va sur la feuille recap sem
Range("c36").Offset(0, semaine - 1) => définit la cellule C36 décalée de 0 ligne et de "semaine-1" colonnes.
Si semaine=1 on se decale de zero (=> C36)
Si semaine=2 on se decale de 1 (=> D36)
Si semaine=3 on se decale de 2 (=> E36)
Etc ...
PasteSpecial Paste:=xlPasteValues => On colle

CInt change une valeur en Integer
Un String est une chaine de texte.
Donc CInt(d'une chaine) donne un integer => un nombre (sur lequel on peut faire de calculs)
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour