Erreur sur sélection de plage de cellules
laraville
-
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
melanie1324 Messages postés 1504 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'avais posé une question hier à laquelle vous avez merveilleusement bien répondu, mais je ne parviens pas à retrouver le topic... :/
Je suis toujours sur mon fichier et je suis face à un autre problème:
Je fais une macro qui doit me copier le contenu de la cellule IX et JX en fonction de la valeur de la cellule EX
La macro actuelle ne fonctionne pas et s'arrête à la ligne soulignée et m'affiche l'erreur suivante: Erreur 1004 Erreur définie par l'application ou par l'objet.
Pourriez-vous m'indiquer une solution?
Je vous remercie par avance.
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(i, 9), Cells(i, 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'avais posé une question hier à laquelle vous avez merveilleusement bien répondu, mais je ne parviens pas à retrouver le topic... :/
Je suis toujours sur mon fichier et je suis face à un autre problème:
Je fais une macro qui doit me copier le contenu de la cellule IX et JX en fonction de la valeur de la cellule EX
La macro actuelle ne fonctionne pas et s'arrête à la ligne soulignée et m'affiche l'erreur suivante: Erreur 1004 Erreur définie par l'application ou par l'objet.
Pourriez-vous m'indiquer une solution?
Je vous remercie par avance.
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(i, 9), Cells(i, 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
A voir également:
- Erreur sur sélection de plage de cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image d’ours polaire sur une image de plage. retrouvez l'image originale de la plage. que cache l'ours polaire ? - Forum Graphisme
- Iptv erreur de lecture - Forum TV & Vidéo
- Image de plage pix ✓ - Forum Google Chrome
5 réponses
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
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?
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
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
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.
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