Problème dans ma macro

  • Initiateur de la discussion Initiateur de la discussion phoque.r
  • 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 !

phoque.r

XLDnaute Occasionnel
Bonjour,

voici le code de ma macro

Code:
Sub essai2()

' Mise en place des différentes valeurs pour la macro
Dim i As Long, nbl As Long, nbl2 As Long ' definition des variables
Sheets("candidats").Select
nbl = Range("A65000").End(xlUp).Row ' recupere le n° de la derniere ligne de la feuille candidats
Windows("archive.xls").Activate
Sheets("acceptés").Select
nbl2 = Range("A65000").End(xlUp).Row ' recupere le n° de la derniere ligne de la feuille acceptés
Windows("encours.xls").Activate
Sheets("candidats").Select


' Boucle de traitement des candidats
For i = 1 To nbl ' Pour i commencant à 1 jusqu'à nbl (fin de tableau de la feuille candidats)

If Cells(9, i) = 1 Then
nbl2 = nbl2 + 1
Cells(9, i) = 2 ' Case passe de 1 à 2
Range("a" & i & ":h" & i).Select  ' Sélectionne la partie à copier
Selection.Copy ' Copier
Windows("archive.xls").Activate
Sheets("acceptés").Select ' Passage à la feuille pour coller
Range("a" & nbl2).Select ' Case de départ pour le coller
ActiveSheet.Paste ' Coller
End If

Next i 

End Sub

pour préciser ce que je veux faire:
mon fichier "encours.xls", contient sur la pages "candidats", des candidats, vous l'aurez compris 🙂 Chaque candidat a diverses informations sur sa ligne. La colonne I prend uniquement les valeurs 0 et 1 au remplissage (accepté ou refusé). Si c'est 1, on veut copier le reste de la ligne (donc de A à H) vers le fichier "archive.xls", feuille "acceptés".

Le problème est le suivant:
ma macro ne plante plus mais ca ne fait rien!!
Il y a peut-être une erreur bête, ce qui ne m'étonnerais pas, je débute 😕

Merci à qui pourra m'aider 🙂

PS: l'erreur vient peut-être de la condition dans la boucle?
 
Re : Problème dans ma macro

Bonjour

regarde bien

Sub essai2()

' Mise en place des différentes valeurs pour la macro
Dim i As Long, nbl As Long, nbl2 As Long ' definition des variables
Sheets("candidats").Select
nbl = Range("A65000").End(xlUp).Row ' recupere le n° de la derniere ligne de la feuille candidats
Windows("archive.xls").Activate
Sheets("acceptés").Select
nbl2 = Range("A65000").End(xlUp).Row ' recupere le n° de la derniere ligne de la feuille acceptés
Windows("encours.xls").Activate
Sheets("candidats").Select


' Boucle de traitement des candidats
For i = 1 To nbl ' Pour i commencant à 1 jusqu'à nbl (fin de tableau de la feuille candidats)

If Cells(9, i) = 1 Then 'Là c'est la cellule de ta feuille Active
nbl2 = nbl2 + 1
Cells(9, i) = 2 ' Case passe de 1 à 2
Range("a" & i & ":h" & i).Select ' Sélectionne la partie à copier
Selection.Copy ' Copier
Windows("archive.xls").Activate 'Là tu active un autre classeur

Sheets("acceptés").Select ' Passage à la feuille pour coller 'Là tu active sune autre feuille
Range("a" & nbl2).Select ' Case de départ pour le coller
ActiveSheet.Paste ' Coller
End If

Next i

End Sub


Donc ta boucle s'effectue après le premier cpoier coller sur ton classeur archive

le mieux est d'éviter les select
 
Re : Problème dans ma macro

bonjour phoque.r

Sub essai2()

' Mise en place des différentes valeurs pour la macro
Dim i As Long, nbl As Long, nbl2 As Long ' definition des variables
Sheets("candidats").Select
nbl = Range("A65000").End(xlUp).Row ' recupere le n° de la derniere ligne de la feuille candidats
Windows("archive.xls").Activate
Sheets("acceptés").Select
nbl2 = Range("A65000").End(xlUp).Row ' recupere le n° de la derniere ligne de la feuille acceptés
Windows("encours.xls").Activate
Sheets("candidats").Select


' Boucle de traitement des candidats
For i = 1 To nbl ' Pour i commencant à 1 jusqu'à nbl (fin de tableau de la feuille candidats)

If Cells(9, i) = 1 Then
nbl2 = nbl2 + 1
Cells(9, i) = 2 ' Case passe de 1 à 2
Range("a" & i & ":h" & i).Select ' Sélectionne la partie à copier
Selection.Copy ' Copier
Windows("archive.xls").Activate
Sheets("acceptés").Select ' Passage à la feuille pour coller
Range("a" & nbl2).Select ' Case de départ pour le coller
ActiveSheet.Paste ' Coller
End If

Next i

End Sub

ta nouvelle macro

Dim i As Long ' definition des variables
workbook("encours.xls").select
for i = 1 to sheets("candidats").range("A65000").end(xlup).row
if sheets("candidats").cells(i,9)=1 then
sheets("candidats").Range("a" & i & ":h" & i).Copy
workbook("archives.xls").select
sheets("acceptés").range("A" & cstr(sheets("acceptés").range("65000").end(xlup).row +1)).paste
workbook("encours.xls").select
sheets("candidats").cells(i,9) = 2
next i

edit : bonjour pascal, j'ajoute : cells(9,i) --> traite toutes le colonnes de la ligne 9 les coordonnées de cells sont inversées de range
 
Dernière édition:
Re : Problème dans ma macro

Il manquait aussi End If 🙂

Mais il me reste un problème

ca me retourne :
Erreur dexécution '438'

Propriété ou méthode non gérés par cet objet

et ca pointe sur le premier workbooks




J'ai essayé de modifier le workbooks(..).select par windows(..).activate

et là ca me donne l'erreur

Erreur d'exécution '9'

L'indice n'appartient pas à la selection

et la ça pointe sur
Workbooks("archives.xls").Select
et si je le modifie par un windows(..).activate, ça me met la même erreur
 
- 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

Réponses
7
Affichages
173
Réponses
3
Affichages
253
Réponses
5
Affichages
907
D
  • Question Question
Réponses
5
Affichages
248
Didierpasdoué
D
Retour