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 08/09/2011, 22h07   #1
Invité de passage
 
Inscription : juin 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 10
Points : 3
Points : 3
Par défaut choix de feuille selon critères dans un autre classeur

Bonjour,

J'ai reussi à faire une mise à jour dans un classeur de données annuelles (700 à 850 codes articles dans une autre feuille où il y a tout le stock (8000 codes articles), certaines données changent annuellement pour environ 10% du stocks. Cette gestion tout à fait personnelle m'évite d'aller dans une application assez lourde et longue lorsque je ne veux que faire de la visu. Seulement, il faut aussi mettre cette application à jour ce qui est long et fastidieux. Cette maj se fait par un import/export de fichier .csv dans cette application aprés avoir rentré ces données dans un autre fichier excel...
Je resume => application => import du fichier excel => maj => enregistrement de ce fichier .xls en .csv=> export dans l'application
Je pense que cette maj grace à une macro du meme style que mon fichier perso peut fonctionner. Sauf qu'il faut faire un choix de feuille selon le code de l'objet
=> si ce code contient un J select feuille 3 du fichier 2, sinon select la feuille 1 du fichier 2
et ensuite en fonction de ce code je vais coller des données qui correspondent au code dans différentes colonnes.
Je ne sais pas si j'ai été assez clair mais je bloque sur ce choix de select feuille du fichier 2
Les deux fichiers sont d'ailleurs ouverts.
Qq peut il m'aider ?
Merci beaucoup !!!
franxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 22h19   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Sauf qu'il faut faire un choix de feuille selon le code de l'objet
c'est quoi le code de l'objet ??? on va dire que c'est le contenu de la cellule A1 Feuil1 du fichier contenant ta macro..

Nul besoin de sélectionner ou active une feuille pour accéder à ses données ...



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Dim sh as workSheet '
 
 
if ThisWorkbook.sheets("Feuil1").range("A1") = "J"
   set sh = Workbooks("fichier 2").sheets("feuille 3") 
else
   set sh = Workbooks("fichier 2").sheets("feuille 1") 
end if
 
'pour changer le contenu de la cellule B3 de la feuille sélectionner :
sh.range("B3")= Now 'Affiche date en cours en B3...
'pour afficher le contenu de la cellule B3 de la feuille sélectionner :
msgbox sh.range("B3")
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 22h38   #3
Invité de passage
 
Inscription : juin 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 10
Points : 3
Points : 3
Merci de cette réponse rapide mais une petite précision :

if ThisWorkbook.range("A1") = "J" veut il dire si A1=J ?


parce que je voulais dire : si A1 contient J dans son code

ex si A1= 12345JXXXX alors aller en feuille 3 du fichier 2

sinon en feuille 1 qui ne contient que les codes 12345PXXX1
Est ce différent ?
franxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 22h45   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
j'ai oublié le nom de la feuille je voulais écrire :
Code :
ThisWorkbook.sheets("Feuil1").range("A1")

Code :
1
2
 
IF instr(1,ThisWorkbook.sheets("Feuil1").range("A1") ,"J") > 0 Then
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 20h59   #5
Invité de passage
 
Inscription : juin 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 10
Points : 3
Points : 3
Merci je comprends un peu mieux, je vais bosser ça avec cette idée !!

Bonjour,

J'ai reussi à avancer un peu mais je ne comprends pas pourquoi une date est rajoutée en derniere ligne....

Quelqu'un peu m'aider ??,

Merci


Code :
1
2
3
4
5
6
7
8
9
10
11
' Copier/Coller Terre du Neutre
        Workbooks("classeur1").Activate
        Sheets("feuil1").Activate
        If Cel1.Offset(0, 4).Value <> "" Then ' On vérifie s'il y a une valeur dans la cellule
        Cel1.Offset(0, 4).Copy
        Workbooks("classeur2.xls").Activate
        Sheets("feuil2").Select
        Cel2.Offset(1, 9).Select
        Selection.PasteSpecial Paste:=xlValues ' Collage Spécial Valeur
        Selection.NumberFormat = "0"
        Cel2.Offset(1, 8) = Mydate
Pièces jointes en attente de validation
Type de fichier : xls Classeur1.xls
Type de fichier : xls Classeur2.xls
franxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 21h07   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par franxy Voir le message
...
J'ai reussi à avancer un peu mais je ne comprends pas pourquoi une date est ...
et à quoi sert ta dernière ligne de code : ?
Citation:
Envoyé par franxy Voir le message
...
Code :
 Cel2.Offset(1, 8) = Mydate



Sinon tu aurais pu tenir compte de mes remarques et ne pas utiliser Select ! ( ni Activate d'ailleurs...)







------------------------------------------------------------------
Je n'ouvre pas les fichiers Excel en pièce jointes ..( fichiers inutiles dans 99% des cas )
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 21h18   #7
Invité de passage
 
Inscription : juin 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 10
Points : 3
Points : 3
Par défaut Re

En fait dans la macro complete du fichier 1je mets deux dates
pour un critere
Cel2.Offset(0, 8) = Mydate

et pour le deuxieme critere

Cel2.Offset(1, 8) = Mydate

je n'ai trouvé que cette solution pour mettre une date en ligne +1 mais effectivement cela en mets aussi une en derniere ligne

Par contre pour les autres conseils, je veux d'abord finaliser meme si c'est pas le top, ensuite je reverrai cela mais je suis trop novice pour comprendre rapidement tout cela dsl
franxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 21h29   #8
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
bon alors j'attends que tu est terminé avant de répondre plus
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 21h36   #9
Invité de passage
 
Inscription : juin 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 10
Points : 3
Points : 3
mais cela fonctionne pas trop mal ainsi sauf cette date en derniere ligne
franxy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h09.


 
 
 
 
Partenaires

Hébergement Web