Erreur sur sélection de plage de cellules
Fermé
laraville
-
Modifié par laraville le 2/08/2013 à 14:19
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 13 août 2013 à 09:25
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 13 août 2013 à 09:25
A voir également:
- Erreur sur sélection de plage de cellules
- Erreur 0x80070643 - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Erreur vidéo freebox ✓ - Forum TV & Vidéo
- Erreur 38 free ✓ - Forum Mobile
- Image de manchots sur une image de plage ✓ - Forum Graphisme
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 748
2 août 2013 à 14:47
2 août 2013 à 14:47
Bonjour,
Ton sujet d'hier était sur le forum bureautique, ICI :
https://forums.commentcamarche.net/forum/affich-28389637-copie-conditionnee-date-vba
Ton sujet d'hier était sur le forum bureautique, ICI :
https://forums.commentcamarche.net/forum/affich-28389637-copie-conditionnee-date-vba
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
2 août 2013 à 16:01
2 août 2013 à 16:01
bonjour,
j'ai trouvé ton pb.
Ta variable i n'est pas définie et tu ui demandes de sélectionner cells(i,9) sauf que i = rien donc ca marche pas.
Remplace ton code par :
Sub FLIP()
Dim classeurSource As Workbook
Dim classeurDestination As Workbook
Dim i As Integer
'ouvrir le classeur Automatisation en lecture seule
Set classeurSource = Application.Workbooks.Open("S:XXXXX", , True)
Application.DisplayAlerts = False
'définit le classeur destination
Set classeurDestination = Application.Workbooks.Open("YYYYY", , True)
classeurSource.Sheets("Fonds").Activate
Col = "E"
NumLig = 0
With Sheets("Fonds")
NbrLig = Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If Cells(Lig, Col).Value = "Fond Interne" Then
Range(Cells(Lig, 9), Cells(Lig, 10)).Select
Selection.Copy
classeurDestination.Sheets("Feuil1").Activate
NumLig = NumLig + 1
Cells(NumLig, 1).Select
Cells(65535, 1).End(xlUp)(2).Select
ActiveSheet.Paste
End If
Next
End With
'fermer le classeur source
classeurSource.Close False
End Sub
j'ai trouvé ton pb.
Ta variable i n'est pas définie et tu ui demandes de sélectionner cells(i,9) sauf que i = rien donc ca marche pas.
Remplace ton code par :
Sub FLIP()
Dim classeurSource As Workbook
Dim classeurDestination As Workbook
Dim i As Integer
'ouvrir le classeur Automatisation en lecture seule
Set classeurSource = Application.Workbooks.Open("S:XXXXX", , True)
Application.DisplayAlerts = False
'définit le classeur destination
Set classeurDestination = Application.Workbooks.Open("YYYYY", , True)
classeurSource.Sheets("Fonds").Activate
Col = "E"
NumLig = 0
With Sheets("Fonds")
NbrLig = Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If Cells(Lig, Col).Value = "Fond Interne" Then
Range(Cells(Lig, 9), Cells(Lig, 10)).Select
Selection.Copy
classeurDestination.Sheets("Feuil1").Activate
NumLig = NumLig + 1
Cells(NumLig, 1).Select
Cells(65535, 1).End(xlUp)(2).Select
ActiveSheet.Paste
End If
Next
End With
'fermer le classeur source
classeurSource.Close False
End Sub
C'est parfait!
Par contre je voudrais que l'opération se répète jusqu'à la dernière ligne de mon classeur source (Toutes les lignes ayant "Fond Interne" dans la colonne E devront apparaitre dans mo classeur de destination. ici il s'arrète à la ligne 1. Faut-il que je lui fasse une loop?
Par contre je voudrais que l'opération se répète jusqu'à la dernière ligne de mon classeur source (Toutes les lignes ayant "Fond Interne" dans la colonne E devront apparaitre dans mo classeur de destination. ici il s'arrète à la ligne 1. Faut-il que je lui fasse une loop?
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
Modifié par melanie1324 le 2/08/2013 à 16:24
Modifié par melanie1324 le 2/08/2013 à 16:24
non, c la macro qui est mal monté , remplaces ton code par :
Sub FLIP()
Dim classeurSource As Workbook
Dim classeurDestination As Workbook
Dim i As Integer
'ouvrir le classeur Automatisation en lecture seule
Set classeurSource = Application.Workbooks.Open("S:XXXXX", , True)
Application.DisplayAlerts = False
'définit le classeur destination
Set classeurDestination = Application.Workbooks.Open("YYYYY", , True)
classeurSource.Sheets("Fonds").Activate
Col = "E"
NumLig = 0
With Sheets("Fonds")
For Lig = 1 To 65536
classeurSource.Sheets("Fonds").Activate
If Cells(Lig, Col).Value = "Fond Interne" Then
Range(Cells(Lig, 9), Cells(Lig, 10)).Select
Selection.Copy
classeurDestination.Sheets("Feuil1").Activate
NumLig = NumLig + 1
Cells(NumLig, 1).Select
Cells(65535, 1).End(xlUp)(2).Select
ActiveSheet.Paste
End If
Next
End With
'fermer le classeur source
classeurSource.Close False
End Sub
Sub FLIP()
Dim classeurSource As Workbook
Dim classeurDestination As Workbook
Dim i As Integer
'ouvrir le classeur Automatisation en lecture seule
Set classeurSource = Application.Workbooks.Open("S:XXXXX", , True)
Application.DisplayAlerts = False
'définit le classeur destination
Set classeurDestination = Application.Workbooks.Open("YYYYY", , True)
classeurSource.Sheets("Fonds").Activate
Col = "E"
NumLig = 0
With Sheets("Fonds")
For Lig = 1 To 65536
classeurSource.Sheets("Fonds").Activate
If Cells(Lig, Col).Value = "Fond Interne" Then
Range(Cells(Lig, 9), Cells(Lig, 10)).Select
Selection.Copy
classeurDestination.Sheets("Feuil1").Activate
NumLig = NumLig + 1
Cells(NumLig, 1).Select
Cells(65535, 1).End(xlUp)(2).Select
ActiveSheet.Paste
End If
Next
End With
'fermer le classeur source
classeurSource.Close False
End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 748
2 août 2013 à 16:27
2 août 2013 à 16:27
Bonjour,
Entre la boucle qui se tape toutes les lignes de 1 à 65536 + les Select, changements de classeurs, ta macro en a pour ... au bas mot 25 minutes à traiter ça... Si elle ne plante pas excel entre temps...
Entre la boucle qui se tape toutes les lignes de 1 à 65536 + les Select, changements de classeurs, ta macro en a pour ... au bas mot 25 minutes à traiter ça... Si elle ne plante pas excel entre temps...
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
2 août 2013 à 16:52
2 août 2013 à 16:52
coucou,
elle peut l'alléger comme ca :
Sub FLIP()
Dim classeurSource As Workbook
Dim classeurDestination As Workbook
Dim i As Integer
'ouvrir le classeur Automatisation en lecture seule
Set classeurSource = Application.Workbooks.Open("S:XXXXX", , True)
Application.DisplayAlerts = False
'définit le classeur destination
Set classeurDestination = Application.Workbooks.Open("YYYYY", , True)
classeurSource.Sheets("Fonds").Activate
Col = "E"
NumLig = 0
With Sheets("Fonds")
For Lig = 1 To 65536
If classeurSource.Sheets("Fonds").Cells(Lig, Col).Value = "Fond Interne" Then
NumLig = NumLig + 1
workbooks(classeurDestination).sheets("Feuil1").Cells(NumLig, 1) = workbooks( classeurSource).Sheets("Fonds").Cells(Lig, 9).Value
workbooks(classeurDestination).sheets("Feuil1").cells(Numlig,2) = workbooks(classeurSource).Sheets("Fonds").Cells(Lig, 10).Value
End If
Next
End With
elle peut l'alléger comme ca :
Sub FLIP()
Dim classeurSource As Workbook
Dim classeurDestination As Workbook
Dim i As Integer
'ouvrir le classeur Automatisation en lecture seule
Set classeurSource = Application.Workbooks.Open("S:XXXXX", , True)
Application.DisplayAlerts = False
'définit le classeur destination
Set classeurDestination = Application.Workbooks.Open("YYYYY", , True)
classeurSource.Sheets("Fonds").Activate
Col = "E"
NumLig = 0
With Sheets("Fonds")
For Lig = 1 To 65536
If classeurSource.Sheets("Fonds").Cells(Lig, Col).Value = "Fond Interne" Then
NumLig = NumLig + 1
workbooks(classeurDestination).sheets("Feuil1").Cells(NumLig, 1) = workbooks( classeurSource).Sheets("Fonds").Cells(Lig, 9).Value
workbooks(classeurDestination).sheets("Feuil1").cells(Numlig,2) = workbooks(classeurSource).Sheets("Fonds").Cells(Lig, 10).Value
End If
Next
End With
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 748
2 août 2013 à 17:55
2 août 2013 à 17:55
C'est déjà beaucoup mieux.
Mais pourquoi boucler sur toutes les lignes. C'est ça que je ne comprends pas :
Mais pourquoi boucler sur toutes les lignes. C'est ça que je ne comprends pas :
For Lig = 1 To 65536
Bonjour à tous,
Je tiens tout d'abord à vous remercier pour votre aide, j'avance à grands pas grâce à vous!
J'ai copié ton code mélanie, mais il plante sur la ligne
workbooks(classeurDestination).sheets("Feuil1").Cells(NumLig, 1) = workbooks( classeurSource).Sheets("Fonds").Cells(Lig, 9).Value
et sur la suivante.
Aurais-tu une idée pour le déboguer? je ne connais pas cette syntaxe.
Je tiens tout d'abord à vous remercier pour votre aide, j'avance à grands pas grâce à vous!
J'ai copié ton code mélanie, mais il plante sur la ligne
workbooks(classeurDestination).sheets("Feuil1").Cells(NumLig, 1) = workbooks( classeurSource).Sheets("Fonds").Cells(Lig, 9).Value
et sur la suivante.
Aurais-tu une idée pour le déboguer? je ne connais pas cette syntaxe.
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
8 août 2013 à 11:25
8 août 2013 à 11:25
coucou,
On va essayer comme ca :
Sub regroupementFR()
'
Dim Fichierdeliaison As Variant
'
'Ouvre tes fichier set mets à jour les liens
Workbooks.Open Filename:= _
"S:\AD Conseil\Fonds\Regroupement des données pour import MS Français.xls", _
UpdateLinks:=3
classeur = activeworkbook.name
Workbooks.Open Filename:="S:\AD Conseil\Fonds\1_Principal data fundlist.xlsm" _
, UpdateLinks:=3
a=activeworkbook.name
'sélectionnes la cellule A1 et tu choisis de copier la dernière cellule située sur la dernière colonne de la dernière ligne
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ligne = activecell.row
colonne = activecell.column
feuille= sheets.name
' là tu as un pb, où veux-tu copier ta cellule. Car ces lignes disent que tu vas coller ta cellule qui est déjà sélectionnée mais il convient de dire range("A1").select
Windows("Regroupement des données pour import MS Français.xls").Activate
Sheets("Infos 1 principales datas").Select
'range("A1")
'je laisse ca mais tu devrais remplacer activecell par range("A1) = par ex
activecell
activecell = workbook(a).sheets(feuille).cells(ligne,colonne)
'copie la colonne D en A
Columns("D:D").Copy Columns("A:A")
'on ouvre un autre fichier
Workbooks.Open Filename:= _
"S:\AD Conseil\Fonds\BASE FONDS - PROTOTYPE\INPUT\2_Source Morningstar fundlist.xls"
source = activeworkbook.name
'essaie et si ca plante dis le, remplace nomfeuillepar le nom te feuille :
Range("A1:AE159").copy
workbooks(classeur).activate
Sheets("Infos de source 2").select
range("A1").select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Fichierdeliaison = Application.GetOpenFilename("Fichiers excel(*.xls),*.xls")
Fichierdeliaison = ActiveWorkbook.Name
Columns("F:F").Copy workbooks("Regroupement des données pour import MS Français.xls").Sheets("Custom Data").Columns ("A:A")
Workbooks("Fichierdeliaison").Sheets("FundManagementStyle").Columns("D:D").Copy workbooks("Regroupement des données pour import MS Français.xls").Sheets("Custom Data").Columns ("B:B")
Columns("A:B").Copy Sheets("en-GB").Columns("B:C")
Application.CutCopyMode = False
ActiveWorkbook.Save
Windows("Fund Updates.xls").Activate
ThisWorkbook.Sheets("Commandes").Activate
Cells(27, 6) = DateValue(Now)
End SubLien (#31)
On va essayer comme ca :
Sub regroupementFR()
'
Dim Fichierdeliaison As Variant
'
'Ouvre tes fichier set mets à jour les liens
Workbooks.Open Filename:= _
"S:\AD Conseil\Fonds\Regroupement des données pour import MS Français.xls", _
UpdateLinks:=3
classeur = activeworkbook.name
Workbooks.Open Filename:="S:\AD Conseil\Fonds\1_Principal data fundlist.xlsm" _
, UpdateLinks:=3
a=activeworkbook.name
'sélectionnes la cellule A1 et tu choisis de copier la dernière cellule située sur la dernière colonne de la dernière ligne
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ligne = activecell.row
colonne = activecell.column
feuille= sheets.name
' là tu as un pb, où veux-tu copier ta cellule. Car ces lignes disent que tu vas coller ta cellule qui est déjà sélectionnée mais il convient de dire range("A1").select
Windows("Regroupement des données pour import MS Français.xls").Activate
Sheets("Infos 1 principales datas").Select
'range("A1")
'je laisse ca mais tu devrais remplacer activecell par range("A1) = par ex
activecell
activecell = workbook(a).sheets(feuille).cells(ligne,colonne)
'copie la colonne D en A
Columns("D:D").Copy Columns("A:A")
'on ouvre un autre fichier
Workbooks.Open Filename:= _
"S:\AD Conseil\Fonds\BASE FONDS - PROTOTYPE\INPUT\2_Source Morningstar fundlist.xls"
source = activeworkbook.name
'essaie et si ca plante dis le, remplace nomfeuillepar le nom te feuille :
Range("A1:AE159").copy
workbooks(classeur).activate
Sheets("Infos de source 2").select
range("A1").select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Fichierdeliaison = Application.GetOpenFilename("Fichiers excel(*.xls),*.xls")
Fichierdeliaison = ActiveWorkbook.Name
Columns("F:F").Copy workbooks("Regroupement des données pour import MS Français.xls").Sheets("Custom Data").Columns ("A:A")
Workbooks("Fichierdeliaison").Sheets("FundManagementStyle").Columns("D:D").Copy workbooks("Regroupement des données pour import MS Français.xls").Sheets("Custom Data").Columns ("B:B")
Columns("A:B").Copy Sheets("en-GB").Columns("B:C")
Application.CutCopyMode = False
ActiveWorkbook.Save
Windows("Fund Updates.xls").Activate
ThisWorkbook.Sheets("Commandes").Activate
Cells(27, 6) = DateValue(Now)
End SubLien (#31)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alors ca plante immédiatement sur la ligne 1
Membre de méthode ou données introuvables.
Membre de méthode ou données introuvables.
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
8 août 2013 à 14:46
8 août 2013 à 14:46
remplace Dim Fichierdeliaison As Variant
par
Dim Fichierdeliaison, classeur, source, a, ligne, colonne As Variant
par
Dim Fichierdeliaison, classeur, source, a, ligne, colonne As Variant
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
8 août 2013 à 16:29
8 août 2013 à 16:29
feuille = activeSheet.Name