Je bloque pour copier coller

Nathan

XLDnaute Nouveau
J'essaie de créer un copie conditionnelle, j'y suis presque arrivé, problème les lignes sont en position 1260 à 1300, du coup j'ai rajouter un j, mais depuis cela ne fonctionne plus. D'autre part lorsque je met un end if vba me dit que je n'ai pas de boucle IF.

Sub Envo()

Dim i As Integer
Dim j As Integer

Workbooks.Open ("C:\Nath\Suivi Batches\2011 - W09 - IED IOSIS.xls")

j = 2

For i = 1000 To 2000

If Workbooks("2011 - W09 - IED IOSIS.xls").Worksheets("HK").Cells(i, 5).Value = "57" Then Workbooks("Classeur3.xls").Worksheets("Feuil1").Cells(j, 1).Value = Workbooks("2011 - W09 - IED IOSIS.xls").Worksheets("HK").Range("J" & i).Value
j = j + 1
End If

Next i


End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Je bloque pour copier coller

Alors, voila comment j'écrirais à peu près votre procédure
VB:
Sub RECUP_WBS()
Dim FWBS As Worksheet, LMaxWBS As Long, FBHK As Worksheet, LMaxBHK As Long
Workbooks.Open ("C:\Nathanaël\Suivi Batches\2011-03-03 - Documents with WBS NI1-L_2011_03_03.xls")
Set FWBS = ActiveWorkbook.Worksheets("Feuil1")
Set FBHK = ThisWorkbook.Worksheets("HK")
Set LMaxWBS = FWBS.Cells.SpecialCells(xlCellTypeLastCell).Row - 2
Set LMaxBHK = FBHK.Cells.SpecialCells(xlCellTypeLastCell).Row - 1
FWBS.[Z3].Resize(LMaxWBS).FormulaR1C1 = "=RC12&RC16&RC8"
FBHK.[J2].Resize(LMaxBHK).FormulaR1C1 = "=MATCH(""HK""&RC2&RC3," _
   & FWBS.[Z3].Resize(LMaxWBS).Address(True, True, xlR1C1, True) & ",0)"
FBHK.[K2].Resize(LMaxBHK).FormulaR1C1 = "=IF(ISNA(RC10),RC8,INDEX(" _
   & FWBS.[W3].Resize(LMaxWBS).Address(True, True, xlR1C1, True) & ",RC10))"
FBHK.[H2].Resize(LMaxBHK).Value = FBHK.[K2].Resize(LMaxBHK).Value
FBHK.[K2].Resize(LMaxBHK).FormulaR1C1 = "=IF(ISNA(RC10),RC8,INDEX(" _
   & FWBS.[V3].Resize(LMaxWBS).Address(True, True, xlR1C1, True) & ",RC10))"
FBHK.[I2].Resize(LMaxBHK).Value = FBHK.[K2].Resize(LMaxBHK).Value
FBHK.[J:K].ClearContents
End Sub
Je n'ai pas pu tester car vos extraits ne semblent pas cohérents entre eux.
Vérifiez si les colonnes sont bonne tant en A1 qu'en R1C1
À+
 

Nathan

XLDnaute Nouveau
Re : Je bloque pour copier coller

Bon je ne comprend pas,

Tout à l'air bon mais j'ai une erreur de compilation, au niveau de:
PHP:
Set LMaxWBS = FWBS.Cells.SpecialCells(xlCellTypeLastCell).Row - 2

Erreur de compilation : objet requis.

je comprend pas alors qu'on a bien dim as long et set.
 

Dranreb

XLDnaute Barbatruc
Re : Je bloque pour copier coller

Plus une erreur d'exécution à mon avis.
Je ne vois pas non plus.
Mettez des espions sur toutes les expressions impliquées
FWBS se retrouve sans doute Nothing mais pourquoi ?
Sais pas. Désolé.

Après réflexion, non ça semble bien être une erreur de compilation.
Décomposer l'affectation en utilisant une Variable Rg As Range intermédiaire.

À mardi prochain au plus tôt.
Bonne soirée, bon week-end.
 
Dernière édition:

Nathan

XLDnaute Nouveau
Re : Je bloque pour copier coller

C'est bon j'ai réussi, il ne faut pas écrire set pour un long.
Par contre il y une chose qui m'ennuie, c'est que la macro écrit 0 là où elle ne trouve rien alors que moi je veux un vide, je vais essayer de voir ce que l'on peut faire.
PHP:
Sub RECUP_WBSB()

Dim FWBS As Worksheet, LMaxWBS As Long, FBHK As Worksheet, LMaxBHK As Long

Dim Année As Variant, Mois As Variant, Jour As Variant

Année = Application.InputBox("Année D'émission du Fichier WBS :", "Saisissez l'année...", , , , , , 2)
Mois = Application.InputBox("Mois D'émission du Fichier WBS :", "Saisissez le mois...", , , , , , 2)
Jour = Application.InputBox("Jour D'émission du Fichier WBS :", "Saisissez le jour...", , , , , , 2)

Workbooks.Open ("C:\Users\nprofichet\Suivi Plans\WBS\Documents with WBS NI1-L_" & Année & "_" & Mois & "_" & Jour & ".xls")

Set FWBS = ActiveWorkbook.Worksheets("Feuil1")
Set FBHK = ThisWorkbook.Worksheets("HK")
LMaxWBS = FWBS.Cells.SpecialCells(xlCellTypeLastCell).Row - 2
LMaxBHK = FBHK.Cells.SpecialCells(xlCellTypeLastCell).Row - 1

FWBS.[Z4].Resize(LMaxWBS).FormulaR1C1 = "=RC12&RC16&RC8"

FBHK.[L2].Resize(LMaxBHK).FormulaR1C1 = "=MATCH(""HK""&RC2&RC3," _
   & FWBS.[Z4].Resize(LMaxWBS).Address(True, True, xlR1C1, True) & ",0)"

FBHK.[M2].Resize(LMaxBHK).FormulaR1C1 = "=IF(ISNA(RC12),RC8,INDEX(" _
   & FWBS.[W4].Resize(LMaxWBS).Address(True, True, xlR1C1, True) & ",RC12))"

FBHK.[H2].Resize(LMaxBHK).Value = FBHK.[M2].Resize(LMaxBHK).Value

FBHK.[M2].Resize(LMaxBHK).FormulaR1C1 = "=IF(ISNA(RC12),RC8,INDEX(" _
   & FWBS.[V4].Resize(LMaxWBS).Address(True, True, xlR1C1, True) & ",RC12))"

FBHK.[I2].Resize(LMaxBHK).Value = FBHK.[M2].Resize(LMaxBHK).Value

FBHK.[L:M].ClearContents

End Sub
 

Nathan

XLDnaute Nouveau
Re : Je bloque pour copier coller

Bon j'ai pas mal avancé depuis vendredi, le fichier tourne bien, j'ai fait programmé les mise en forme conditionnelle. Maintenant le but serais de faire en sorte que le fichier ne dépendent pas de mon ordinateur, c'est à dire que je mette les fichiers dans un même dossier et que si je copie tout le dossier à un autre endroit, la macro cherche dans ce dossier.

En gros je veux savoir si je peux me défaire du chemin des fichiers en faisant chercher la macro à partir du dossier où est le fichier excel.

Merci
 

Dranreb

XLDnaute Barbatruc
Re : Je bloque pour copier coller

Bonjour.
C'est probablement possible mais...
Qu'est ce qui est constant ? le classeur (et donc son chemin) qui contient la macro ?
Mais alors pas de problème: il part sur le classeur actif quel qu'il soit !
Un peu plus compliqué si le classeur à mettre à jour ne sera plus le classeur de macros.
Trop flou pour moi le problème pour l'instant.
À +
 

Nathan

XLDnaute Nouveau
Re : Je bloque pour copier coller

Oui le classeur contenant les macro est constant, en fait je fait un dossier avec le classeur contenant les macros et les autre classeur que j'enregistre dans ce dossier et des sous dossiers.
Ce que je veux c'est que si je copie le dossier complet à un autre emplacement, je n'ai pas à changer le chemin dans la macro.
 

Dranreb

XLDnaute Barbatruc
Re : Je bloque pour copier coller

Il est possible d'explorer les classeurs ouverts.
Peut on y trouver un critère permettant d'identifier s'il s'agit du classeur à mettre à jour ou du classeur source ?
Sinon il faut demander à l'usager par MsgBox jusqu'à ce qu'on ait tous les éléments pour effectuer le travail.

Notez que j'ai un UserForm de service à usage général pour enregistrer des sélections en vue d'un travail spécifique. Il permettrait de sélectionner n'importe quoi dans des feuilles dans le seul but de les identifier. Il est non modal: on peut ouvrir les fichiers si nécessaire, un bouton "Go!" permet de lancer l'exécution quand on a tout ce qu'il faut.
 
Dernière édition:

Nathan

XLDnaute Nouveau
Re : Je bloque pour copier coller

J'ai un petit problème,
Comment peut-on faire pour que au lieu que cela me renvoi un 0 quand c'est vide, cela me renvoi un X ou tout simple rien du tout, car dans ma colonne date cela me donne des 01/01/1900.
[PHesize(LMaxBHK).FormulaR1C1 = "=IF(ISNA(RC12),RC8,INDEX(" _
& FWBS.[W4].Resize(LMaxWBS).Address(True, True, xlR1C1, True) & ",RC12))"


[/PHP]

J'ai bien compris qu'il faut que je remplace RC8 dans l'expression IF, mais je ne trouve pas par quoi pour que cela me renvoi du vide.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Je bloque pour copier coller

Une formule ne peut hélas pas renvoyer un état de cellule vide. Mais dans la quasi totalité des cas une chaîne vide fait l'affaire. Deux quotes consécutives seraient interpretées comme une seule, il faut donc en spécifier quatres pour la formule. Plus précisément:
VB:
"=IF(ISNA(RC12),RC8&"""",INDEX(" _
pour les chaînes ou bien:
VB:
"=IF(ISNA(RC12),IF(RC8="""";"""";RC8),INDEX(" _
pour n'importe quoi.
 
Dernière édition:

Statistiques des forums

Discussions
312 683
Messages
2 090 904
Membres
104 693
dernier inscrit
azizou900