[XL 2003] Fonction For

boubmarley

XLDnaute Nouveau
Bonjour,

Apres de nombreuses recherche, je finis par venir vous demander de l'aide concernant ma macro.

Je souhaite deux choses:
-choisir les valeurs que je veux dans une fonction for (je veux les valeurs 4,6,7,10,17,19,...! mais pas des 5,8,9,11 ,...)

-ensuite je voudrais accelerer ma macro (en me renseignant, j'ai découvert que les select n'etait pas conseillés)



Pour que ce soit plus clair, voici un bout de ma macro

Dim i As Integer
Dim j As Integer
Dim h As Integer

h = 4




For j = (4) To (70)

Windows("Classeur 1.xls"). _
Activate
Sheets("Feuille 1").Select
Range("D4").Select
ActiveCell.FormulaR1C1 = j
Range("E15:E175").Select
Selection.Copy
Windows("Classeur 2.xls"). _
Activate
Sheets("Feuille 1").Select
Cells(3, h).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Windows("Classeur 1.xls"). _
Activate
Sheets("Feuille 1").Select
Range("D9:D12").Select
Selection.Copy
Windows("Classeur 2.xls"). _
Activate
Sheets("Feuille 2").Select
Cells(j, 4).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

If j = 4 Then
j = 5
End If

If j = 7 Then
j = 9
End If


If j = 17 Then
j = 18
End If

If j = 19 Then
j = 59
End If

h = h + 1

Next j

Merci de votre aide
 

jp14

XLDnaute Barbatruc
Re : [XL 2003] Fonction For

Bonjour

Lorsque l'on à des comparaisons multiples li faut utiliser soit "ElseIF" ou "Select Case"

Select case j
case 4,6,7,10,17,19

case else

end select

JP
 

JNP

XLDnaute Barbatruc
Re : [XL 2003] Fonction For

Bonjour le fil :),
A tester
Code:
Dim i As Integer, j As Integer, h As Integer
h = 4
For j = 4 To 70
With Windows("Classeur 1.xls").Sheets("Feuille 1")
.Range("D4").FormulaR1C1 = j
Windows("Classeur 2.xls").Sheets("Feuille 1").Cells(3, h).Resize(159).Value = .Range("E15:E175").Value
Windows("Classeur 2.xls").Sheets("Feuille 2").Cells(j, 4).Resize(3).Value = .Range("D9:D12").Value
End With
If j = 4 Then
j = 5
ElseIf j = 7 Then
j = 9
ElseIf j = 17 Then
j = 18
ElseIf j = 19 Then
j = 59
End If
h = h + 1
Next j
Bonne suite :cool:
 

boubmarley

XLDnaute Nouveau
Re : [XL 2003] Fonction For

Merci pour ces réponses mais j'ai encore un soucis...

Notament sur ton code JNP:

sur la ligne With Windows("Classeur 1.xls").Sheets("Feuille 1")

il me repond:

"erreur d'éxécution '438'
propriété ou méthode non gérée par cet objet"

et malgré mes recherches je ne comprend pas...
 

JNP

XLDnaute Barbatruc
Re : [XL 2003] Fonction For

Re :),
sur la ligne With Windows("Classeur 1.xls").Sheets("Feuille 1")

il me repond:

"erreur d'éxécution '438'
propriété ou méthode non gérée par cet objet"
Code:
With WorkBooks("Classeur 1.xls").Sheets("Feuille 1")
devrait aller mieux :eek:... Idem pour les autres Windows :rolleyes:...
Bonne suite :cool:
 

boubmarley

XLDnaute Nouveau
Re : [XL 2003] Fonction For

La macro marche sans erreur mais j'ai encore un petit soucis...!

Elle ne copie pas les valeurs dans le 2eme classeur (en 1ere ou 2eme feuille)

Cependant elle change bien mes valeurs de j car en déroulement pas à pas je vois les valeurs changer
 

JNP

XLDnaute Barbatruc
Re : [XL 2003] Fonction For

Re :),
J'ai surtout réduit le code, mais sans le fichier, difficile de te dire :rolleyes:...
Pour moi, il ne parait pas logique de faire une boucle pour copier toujours les mêmes valeurs à des emplacements différents, mais bon, c'est à toi de voir :p...
Bonne suite :cool:
 

boubmarley

XLDnaute Nouveau
Re : [XL 2003] Fonction For

J'aimerais bien partager le fichier mais je n'en ai pas le droit...

cependant j'ai réussi a faire copier mes valeurs en rajoutant cela:

Workbooks("Classeur 2.xls").Sheets("Feuille 1").Cells(3, h).Resize(159).Value = Workbooks("Classeur 1.xls").Sheets("Feuille 1").Range("E15:E174").Value
Workbooks("Classeur 2.xls").Sheets("Feuille 2").Cells(4, (h - 1)).Resize(3).Value = Workbooks("Classeur 1.xls").Sheets("Feuille 2").Range("D9:D13").Value


Mais j'ai un probleme (oui juste un dernier):
malgré le fait que je demande de copier E15:E174; il me copie jamais la derniere ligne... (il me copie E15:E175).
Y a t-il une explication?
 

boubmarley

XLDnaute Nouveau
Re : [XL 2003] Fonction For

C'est bon j'ai trouvé...

il fallait juste recalculer la taille des resize... il fallait 160 au lieu de 159 et 4 au lieu de 3

Merci beaucoup pour ton aide...
 

Discussions similaires


Haut Bas