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 23/11/2011, 16h38   #1
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Par défaut Connaitre ligne de l'ActiveCell

Bonjour membres du Forum,

Dans un la collone A de la feuille (Données) d'un classeur (TIME_MANAGEMENT) je cherche la premiere cellule vide.

Savez vous comment faire en sorte que dans la première cellule que je trouve vide en collone A s'inscrive la valeur de la MÊME cellule de la feuille (Reporting) d'un AUTRE classeur (Reporting_Database).

Je joint le début de 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
Dim wb As Workbook
Dim ws As Worksheet
 
Set wb = Workbooks.Open("E:\Users\puledad1\Documents\Database\Reporting_Database.xls")
Set ws = wb.Worksheets("Reporting")
 
Workbook("TIME_MANGEMENT").sheet("Données").Select
Range("A2").Select
 
If ActiveCell.Value = "" Then
GoTo Copiervaleur
End If
 
If ActiveCell.Value <> "" Then
ActiveCell.Offset(1, 0).Select
End If
 
Loop Until ActiveCell.Value = ""
 
Copiervaleur:
 
'Savoir quelle est notre ActiveCell et chercher la valeur dans la même cellule de l'autre classeur.
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 17h26   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Essaie ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim wb As Workbook
Dim ws As Worksheet
 
Set wb = Workbooks.Open("E:\Users\puledad1\Documents\Database\Reporting_Database.xls")
Set ws = wb.Worksheets("Reporting")
 
Dim ws2 As Worksheet
Set ws2 = Workbooks("TIME_MANGEMENT").Sheets("Données")
 
Dim firstEmptyRow As Integer
firstEmptyRow = ws2.Range("A1").End(xlDown).Row + 1
 
ws2.Cells(1, firstEmptyRow).Value = ws.Cells(1, firstEmptyRow).Value
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 14h34   #3
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Bonjour

Cela me fait une "Runtime error 9" subscript out of range.

Code :
Set ws2 = Workbooks("TIME_MANGEMENT").Sheets("Données")
Sur cette ligne
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 14h40   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Peut-être parce qu'il manque le A de MANAGEMENT. J'avais repris ton code. Il faut bien sûr que le classeur soit ouvert, s'appelle bien comme indiqué et qu'il contienne une feuille "Données"
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 14h45   #5
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Merci beaucoup de votre grande réactivité.

C'était effectivement le problême.
Cependant, j'ai maintenant le message d'erreur "Overflow" sur cette ligne

Code :
firstEmptyRow = ws2.Range("A1").End(xlDown).Row + 1
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 14h52   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Il doit manquer le .xls aussi.
Dans le code suivant
Code :
Set ws2 = Workbooks("classeur").Sheets("feuille")
remplace "classeur" par ce que tu vois écris dans la barre de titre de ton classeur et "feuille" par le nom exact de la feuille.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 14h56   #7
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Oui j'avais finalement resolu ce problême. J'ai honte d'avoir fait un post pour ca.

J'ai cependant une run time error 6 "Overflow".

A la ligne

Code :
firstEmptyRow = ws2.Range("A1").End(xlDown).Row + 1
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 14h59   #8
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Il faut peut-être déclarer firstEmptyRow en Long plutôt qu'en Integer s'il y a beaucoup de lignes.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 15h03   #9
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Ok, on passe à la suivante

Je suis désolé j'apprend sur le tas.

J'ai maintenant une

Run time error 1004
application-defined or object-defined error
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h11   #10
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Où ça ?
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 15h15   #11
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Tantôt là
Code :
ws2.Cells(1, firstEmptyRow).Value = ws.Cells(1, firstEmptyRow).Value
Tantôt là
Code :
Set wb = Workbooks.Open("E:\Users\puledad1\Documents\Database\Reporting_Database.xls")
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h22   #12
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Pour le deuxième cas, tu peux avoir une erreur si le classeur est déjà ouvert ou si le chemin que tu donnes n'est pas correct.
Pour le premier, je ne vois pas si tout s'est bien déroulé jusque là. A moins qu'il n'y ait aucune donnée sur la colonne A, du coup la première ligne vide n'existe pas : firstEmptyRow est plus grand de 1 par rapport au nombre de lignes du classeur
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 15h27   #13
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Bon ben je vais bricoler un peu.
Merci beaucoup.
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h29   #14
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Le mode débogage et les espions sont tes meilleurs amis ! Sinon, tu peux toujours envoyer tes fichiers, mais vu qu'il s'appellent "database" je suppose qu'il sont gros. Sans parler de l'éventuelle confidentialité.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 15h33   #15
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Nan, mais c'est de la merde.

Je me suis lancer dans un truc pourri, qui doit marcher en mode multi utilisateur, du coup un fichier sur un serveur en mode lecture seul permet de saisir des données, ca ouvre un fichier excel en mode partager stock les données dedans le referme quasi instantanement.
Puis ensuite pour travailler le données je les réimportes dans le premier fichier.
C'est ignoblissime.

Donc l'envoyer c'est compliqué je pense.
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h37   #16
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
Tu as pensé à passer ta base en Access plutôt qu'Excel ?
Avec un fichier de pilotage en Excel pour chaque utilisateur éventuellement.

Avec la configuration dont tu me parles, tu éviterais beaucoup de problèmes de conflits d'accès.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 15h57   #17
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Ptite idée : il y a pas un code pour copier toute une feuille plûtot que faire cellule par cellule enfait.

Concernant votre proposition :

Comment faudrait-il s'y prendre.

Je fait mes Userform de saisie avec Excel et ca Stock les données sur Access?
y a til un avantage? Lequel?

L'avantage de ce que j'ai fait jusqu'a présent c'est que plusieur utilisateurs puisse rentrer les données quasi en même temps.
Car le classeur ou est stocké les données saisies s'ouvre et se referme presque instantanément.

Enfin, peut-on aisément sortir des graphs avec Access qui s'actualise etc...
Parceque la finalité de mon application c'est de povoir tirer des indicateurs sous formes de graph de fromage etc......
puledad1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 17h38   #18
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 861
Points : 1 861
L'avantage d'Access, c'est que ça pourra vraiment être simultané (Enfin au pire c'est mis dans une file d'attente) et qu'il n'y aura pas de problème d'ouverture en lecture seule. Après, si c'est piloté via une feuille excel tu peux sans problème faire des graphs qui s'actualisent et tout.
Mais si tu ne connais pas Access et ADO, c'est vrai que ça va demander un petit investissement en temps au début.

Pour la copie d'une feuille
Code :
1
2
3
Dim tmp as Variant
tmp = ws.Cells
ws2.Cells = tmp
Il doit même y avoir plus simple, c'est le premier truc qui m'est venu.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/11/2011, 10h29   #19
Invité régulier
 
Homme Adrien
Inscription : août 2011
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Adrien
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 48
Points : 7
Points : 7
Ok je vais tester tout ca. Merci beaucoup pour vos conseils.

Adrien
puledad1 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 14h44.


 
 
 
 
Partenaires

Hébergement Web