Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 16h22   #1
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
Par défaut Problème (surement simple) de code

Bonjour,

Qu'est ce qui ne va pas dans cette ligne de code ?

Code :
ws1.Range(Cells(1, 1), Cells(DerL1 - 1, 1)).Copy ws4.Range("A:A")
J'ai un fichier qui comprend 20000 lignes
Je cherche à copier les cellules A2 à A19999 de la feuille 1 sur les cellules A1 à A19998 de la feuille 2

Cordialement

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h31   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
J'essaierais :

Code :
ws1.Range(Cells(2, 1), Cells(DerL1 - 1, 1)).Copy ws4.Range("A1")
si DerL1=20000
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h36   #3
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
Code :
1
2
3
4
5
  'Recherche de la dernière ligne renseignée dans la colonne A de la feuille 1
    DerL1 = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row
 
    'Recopie de la colonne A2 à Ax-1 de la feuille 1 dans la feuille 4
    ws1.Range(Cells(2, 1), Cells(DerL1 - 1, 1)).Copy ws4.Range("A1")
Non ça ne fonctionne pas non plus ...
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h45   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Qu'est-ce que tu obtiens ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 16h54   #5
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
J'obtiens :

Citation:
Erreur d'exécution '1004' :

La méthode 'Range' de l'objet '_Worksheet' a échoué
Une idée ?
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 17h03   #6
Membre du Club
 
Consultant KPI
Inscription : août 2010
Messages : 23
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant KPI

Informations forums :
Inscription : août 2010
Messages : 23
Points : 43
Points : 43
et avec
Code :
1
2
3
4
 
ws1.Range(Cells(2, 1), Cells(DerL1 - 1, 1)).Copy 
ws4.Range("A1").Select
Selection.Paste
Si ça ne marche pas, peux-tu nous donner la valeur de DerL1 au moment de la sélection ?
DeTraX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 17h24   #7
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
9a ne fonctionne pas. Toujours la même erreur.

Comment puis je trouver la valeur de DerL1 au moment de la sélection ?

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
'Déclaration des variables
    Dim ws0 As Worksheet, ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, ws4 As Worksheet
    Const PremL1 = 1 'Première ligne de données dans la feuille 1
    Const PremC1 = 1 'Première colonne de données dans la feuille 1
    Dim DerL1 As Long 'Dernière ligne de données dans la feuille 1
    Dim DerC1 As Long 'Dernière colonne de données dans la feuille 1
    Dim Col As Long
    Dim Lig As Long
    Dim Lign As Long
 
    'Attribution de valeurs
    Set ws0 = Worksheets("Macro")
    Set ws1 = Worksheets("Données brutes") 'L'objet Feuille 1 est attribué à la variable ws1
    Set ws2 = Worksheets("Soustraction") 'L'objet Feuille 2 est attribué à la variable ws2
    Set ws3 = Worksheets("Normalisation") 'L'objet Feuille 3 est attribué à la variable ws3
    Set ws4 = Worksheets("Dérivée")
 
    'Recherche de la dernière ligne renseignée dans la colonne A de la feuille 1
    DerL1 = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row
    'Recherche de la dernière colonne renseignée dans la ligne 1 de la feuille 1
    DerC1 = ws1.Cells(1, ws1.Columns.Count).End(xlToLeft).Column
 
    'Recopie de la colonne A de la feuille 1 dans les feuilles 2 et 3
    ws1.Range("A:A").Copy ws2.Range("A:A")
    ws1.Range("A:A").Copy ws3.Range("A:A")
    'ws1.Range("A:A").Copy ws4.Range("A:A")
    'Recopie de la colonne A2 à Ax-1 de la feuille 1 dans la feuille 4
    Sheets("Données brutes").Range(Cells(2, 1), Cells(DerL1 - 1, 1)).Copy
    Sheets("Dérivée").Range("A1").Select
    Selection.Paste
Et le document possède 1738 lignes
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 17h38   #8
Membre du Club
 
Consultant KPI
Inscription : août 2010
Messages : 23
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant KPI

Informations forums :
Inscription : août 2010
Messages : 23
Points : 43
Points : 43
pour afficher tes bornes
Code :
1
2
3
4
5
6
7
 
'Recherche de la dernière ligne renseignée dans la colonne A de la feuille 1
DerL1 = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row
'Recherche de la dernière colonne renseignée dans la ligne 1 de la feuille 1
DerC1 = ws1.Cells(1, ws1.Columns.Count).End(xlToLeft).Column
' Affichage
Msgbox "DerL1 = " & DerL1 & " - " & "DerC1 = " & DerC1
DeTraX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 17h39   #9
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
Alors DerL1= 1738
DerC1=1
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 18h12   #10
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bien sûr :

Code :
ws1.Range(ws1.Cells(2, 1), ws1.Cells(DerL1 - 1, 1)).Copy ws4.Range("A1")
J'ai honte de ne pas y avoir pensé plus tôt !
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2011, 19h50   #11
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
Je regarde demain matin au boulot et je te dis si ta proposition fonctionne correctement


Bonne soirée

(PS Daniel, je sais que je suis "Hors la loi" vis à vis du forum et que j'abuse de ta gentillesse, mais j'aurai encore besoin d'un coup de main sur un problème que tu as résolu aujourd'hui, j'ai rajouté un message dans le poste si tu pouvais jeter un coup d'oeil sur ce poste je t'en serais très reconnaissant) :

http://www.developpez.net/forums/d11...chiers-textes/

Encore un énorme merci)

Cordialement

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 07h08   #12
Membre régulier
 
Homme Vincent Vincent
Inscription : octobre 2010
Messages : 242
Détails du profil
Informations personnelles :
Nom : Homme Vincent Vincent
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2010
Messages : 242
Points : 80
Points : 80
Bonjour,

Merci beaucoup Daniel, le code fonctionne parfaitement !

Cordialement

Vincent
Vincent32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h12.


 
 
 
 
Partenaires

Hébergement Web