titi30240
Messages postés1Date d'inscriptionlundi 22 février 2016StatutMembreDernière intervention22 février 2016
-
Modifié par jordane45 le 22/02/2016 à 18:12
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
23 févr. 2016 à 10:55
Bonjour,
J'ai pondu une makro excel qui ne marche qu'une fois. Admettes que c'est un comble.
Je ne vous conterai pas la somme d'insultes que j'ai reçu.
Cela fait une semaine que je suis dessus et je ne comprends pas pourquoi cela ne marche pas La seule réponse de excel "Ref".
Voilà le code:
Sub CalculCrédit()
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Bon
'Se placer sur la case de départ
Range("I5").End(xlDown).Offset(1, 0).Select
ActiveCell.Offset(1, -1).Select
'xxxxxxxxxxxxxxxx
Range("H2").Select
Selection.ClearContents
Range("I2").Select
Selection.ClearContents
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxBon
'Colonne H
'Aller au depart, sur la cellule à copier, copier
Range("H5").End(xlDown).Offset(1, 0).Select
ActiveCell.Offset(-1, 0).Select
Selection.Copy
'Aller à H2 et coller et liberer la memoire
Range("H2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxBon
'ColonneI
'Aller sur la premiere case vide de la colonne et remonter 1 case et copier
Range("I5").End(xlDown).Offset(1, 0).Select
ActiveCell.Offset(-1, 0).Select
Selection.Copy
'Aller à I2 et coller et liberer la memoire
Range("I2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxBon
'Aller à la première case vide de la colonne et calculer
Range("I5").End(xlDown).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=R[-34]C-R[-34]C[-1]"
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'Effacer le presse papier et les données
' Range("H2").Select
'Selection.ClearContents
'Range("I2").Select
'Selection.ClearContents
'Application.CutCopyMode = False
'Application.CommandBars("clipboard").Controls(4).Execute
End sub
Pourquoi cela ne marche pas s'il vous plaît.
EDIT : Ajout des balises de code (la coloration syntaxique). Explications disponibles ici :ICI
A partir de ces éléments, tu devrais être capable de créer une macro qui, en trois lignes de code, sans Select, sans Copy, sans Paste, te fais ce que tu souhaites, sans erreur #REF.
pijaku
Messages postés12263Date d'inscriptionjeudi 15 mai 2008StatutModérateurDernière intervention 4 janvier 202414 23 févr. 2016 à 09:37
Pour compléter ma réponse, à la question pourquoi ça ne marche qu'une fois, la réponse est simple. Tu peux la trouver en résolvant cettte "énigme" :
Que signifie, selon toi, le 34 dans : "=R[-34]C-R[-34]C[-1]" ?
jordane45
Messages postés38138Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention17 avril 2024344 23 févr. 2016 à 09:41
Salut Pika,
Moi je ne fais pas de .select ... ni d'aller/retour avec des OFFSET.
Et oui.. le souci, comme je le lui ai indiqué ..., se trouve au niveau de sa formule.......
:-)
pijaku
Messages postés12263Date d'inscriptionjeudi 15 mai 2008StatutModérateurDernière intervention 4 janvier 202414
>
jordane45
Messages postés38138Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention17 avril 2024 23 févr. 2016 à 09:49
Moi je ne fais pas de .select ... ni d'aller/retour avec des OFFSET. Je sais bien.
Ma réponse était destinée à titi, pas à toi.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 23 févr. 2016 à 10:55
Bonjour à tous les trois,
Déjà : lorsque l'on écrit (la toute première partie, car je n'ai même pas voulu aller plus loin) :
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Bon
'Se placer sur la case de départ
Range("I5").End(xlDown).Offset(1, 0).Select
ActiveCell.Offset(1, -1).Select
'xxxxxxxxxxxxxxxx
Range("H2").Select
Selection.ClearContents
Range("I2").Select
Selection.ClearContents
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
qui n'équivaut finalement à rien d'autre que cette seule ligne :
Range("H2:I2").ClearContents
on montre surtout qu'on ne comprend pas grand-chose aux lignes de code que l'on aligne et qu'il vaudrait mieux commencer par l'apprentissage des toutes premières bases.
22 févr. 2016 à 18:34
Pourquoi ne travailles-tu pas en FormulaLocal plutôt qu'avec l'écriture LC ? je pense que ça serait plus clair....