IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro pour création de fichier selon critères [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut Macro pour création de fichier selon critères
    Bonjours à tous !

    J'essaye de m'initier aux macros sur VBA, mais c'est pas si simple pour moi...

    Bref concrètement, je voulais savoir s'il était possible à partir d'une macro de créer des fichiers Excel (dans un sous dossier) en fonction de critères mentionnés sur un fichier Excel (fichier BASEdonnées).

    Je voudrais qu'une macro créait des fichiers xls avec le nom déterminé colonne 4, en prenant pour exemple le modèle (voir fichier modèle).

    Il faudrait lors de la création des fichiers ajouter comme critère de ne pas créer les fichiers clos (avec une croix dans la colonne 3).

    Pour finir, il faudrait que cette macro intègre le copier-coller de deux éléments dans les fichiers avant l'enregistrement :

    - Copier la colonne 1 du fichier "BASEdonnées" et coller dans la colonne L3C2 du fichier modèle
    - Copier la colonne 2 du fichier "BASEdonnées" et coller dans la colonne L2C2 du fichier modèle

    Pensez-vous que c'est réalisable? J'espère que oui parce qu'avec Excel 5.0 j'avais réussi à faire une macro de la sorte avec des lignes de critères et tout... Maintenant les macros sont uniquement réalisable sur VBA et comme je maître pas trop je compte sur vous !!

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Parfaitement réalisable, une boucle avec un select case et le tour est joué

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Euh oui oui... Mais pour moi tout ça c'est du Latin "Boucle" "Select case"... je suis vraiment une quiche en VB

  4. #4
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,

    Bon j'ai des questions sur ton pbl
    a) Tu dis que tu te trouves sur Excel 2007 (c'est ce que tu as selectionner lors de ton premier post.

    Si c'est bien le cas alors est-ce que c'est des classeurs format 2003 (extention xls) ou des classeurs format format 2007 (extention xlsx)

    b) tu dis qu'il faut utiliser un modèle ! ds ce cas il faut faire un classeur de format modèle (extention : xlt pour 2003, xltx pour 2007) ce serait a mon avis plus propre.
    (cela fonctionne un peu comme les modèles de word c'est pas plus difficile)

    c) tu dis
    Il faudrait lors de la création des fichiers ajouter comme critère de ne pas créer les fichiers clos (avec une croix dans la colonne 3).
    ma question est : Est la totalité des classeurs non clos ou un par un ?

    d) la macro se lance à partir d'où ?

    Sinon d'près ce que j'ai vu je confirme que oui c'est faisable et même j'ajoute que c'est pas méchant !!!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Merci pour ton intérêt Igloobel

    Bon j'ai des questions sur ton pb
    a) Tu dis que tu te trouves sur Excel 2007 (c'est ce que tu as sélectionner lors de ton premier post.

    Si c'est bien le cas alors est-ce que c'est des classeurs format 2003 (extention xls) ou des classeurs format format 2007 (extention xlsx)
    Effectivement pour le moment le fichier est au format .xls 2003 parce que j'avais fait ma base de donnée sous 2003. Mais j'utilise 2007 je peux passer le fichier au format XLSX sans problème si besoin.

    b) tu dis qu'il faut utiliser un modèle ! ds ce cas il faut faire un classeur de format modèle (extention : xlt pour 2003, xltx pour 2007) ce serait a mon avis plus propre.
    (cela fonctionne un peu comme les modèles de word c'est pas plus difficile)
    Oui tu as raison je vais enregistrer mon fichier modèle au format .xltx

    c)ma question est : Est la totalité des classeurs non clos ou un par un ?
    Euh j'ai pas compris là... Mais oui le but est de créer des fichiers Excel à partir du modèle avec le nom des fichiers présents dans la base de données en excluant les dossiers clôturés qui ont une croix dans ma base de donnée.

    d) la macro se lance à partir d'où ?
    Ben je ne sais pas le mieux ça serait qu'elle se lance à partir du modèle par exemple et qu'elle aille chercher directement les informations dans la base de données. en créant les fichiers Excel dans un sous dossier

    Sinon d'près ce que j'ai vu je confirme que oui c'est faisable et même j'ajoute que c'est pas méchant !!!
    Oui tout le monde s'accorde à dire que c'est pas méchant... Mais comment faire?! moi je suis nul en VBA

  6. #6
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Ne t’inquiètes pas je vais t'aider !

    tout d'abord merci pour les réponse cela m’éclaire
    J'ai dis
    ma question est : Est la totalité des classeurs non clos ou un par un ?
    Bon alors là je suis désolé j'ai mangé des mots si bien que ma question est quasi incompréhensible
    Voilà ma question :
    Est-ce que c'est la totalité des classeurs non clos à créer d'un seul coup ou un par un à la demande ?
    A ma décharge comme j'étais au travail et que ma pause de midi était finie, je me suis dépêché d'écrire mes questions sans me relire
    j'espère que c'est plus clair

    En répondant à cette question on peut plus facilement décider où on met la macro.

    Bon alors il faut faire un choix
    Effectivement pour le moment le fichier est au format .xls 2003 parce que j'...
    Oui tu as raison je vais enregistrer mon fichier modèle au format .xltx
    soit tu mets tout en 2003 soit tout en 2007 mais je te déconseille de faire un mélange c'est source d'embrouille.

    Par contre depuis mon premier post j'ai réfléchi et je pense qu'il serait encore plus simple d'intégrer ton modèle de feuille à l’intérieur de ton classeur base de donnée.

    tu connais la méthode :
    - clic droit sur l'onglet
    - déplacer ou copier
    - cocher "créer une copie"
    - sélectionner "nouveau classeur" puis OK

    Tu peux demander à Excel de créer ma macro pendant que tu fais la manip et tu aura un bout de code que l'on arrangera après.

    tu le fais et tu post ton résultat

    Igloobel

    PS comme je travaille je ne pourrais te répondre que le soir

    @ bientôt

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Ne t’inquiètes pas je vais t'aider !

    tout d'abord merci pour les réponse cela m’éclaire
    J'ai dis Bon alors là je suis désolé j'ai mangé des mots si bien que ma question est quasi incompréhensible
    Ne t'excuses pas t'es déjà gentil de m'aider en plus sur tes heures de boulot !

    Voilà ma question :
    Est-ce que c'est la totalité des classeurs non clos à créer d'un seul coup ou un par un à la demande ?
    En faite je pense que le mieux ça aurait de créer tous les classeurs d'un seul coup. Parce que la liste définitive sera très longue

    Bon alors il faut faire un choix soit tu mets tout en 2003 soit tout en 2007 mais je te déconseille de faire un mélange c'est source d'embrouille.

    Par contre depuis mon premier post j'ai réfléchi et je pense qu'il serait encore plus simple d'intégrer ton modèle de feuille à l’intérieur de ton classeur base de donnée.
    J'ai choisi de tout mettre au format Excel 2007 et j'ai également rajouter le modèle directement au fichier "Basedonnées" dans un onglet que j'ai renommé "modele" j'ai mis le fichier ci-joint

    Tu peux demander à Excel de créer ma macro pendant que tu fais la manip et tu aura un bout de code que l'on arrangera après.

    tu le fais et tu post ton résultat
    Voila mon problème je maîtrise pas du tout les macros et les lignes de code VBA, je ne sais même pas comment faire cette dernière manip.

    Merci infiniment pour ton aide en tout cas
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,
    Ne t'excuses pas t'es déjà gentil de m'aider en plus sur tes heures de boulot !
    En fait juste à ma pause méridienne ! (comme en plus il n'y a pas de pause le matin et l'après midi, cela ne me gène pas trop vu que je ne fume pas) On pédale tous comme des tarés et en plus il faut faire le boulot de ceux qui sont malade, j'estime que je peux prendre ma pause méridienne comme je le veux

    J'ai dis
    Tu peux demander à Excel de créer ma macro pendant que tu fais la manip et tu aura un bout de code que l'on arrangera après.
    tu le fais et tu post ton résultat
    Comme tu dis
    Voila mon problème je maîtrise pas du tout les macros et les lignes de code VBA, je ne sais même pas comment faire cette dernière manip.
    Je vais pas le faire mais te guider pas à pas

    Tu es sous 2007 Ok mais as-tu l'onglet "Développeur" ?
    Probablement pas puisque tu dis que tu connais rien au VBA
    Il faut savoir que lorsque l'on installe Excel l'onglet n'est pas actif !!!

    Pour cela il faut
    1°) cliquer sur le bouton Office (l'espèce de truc rond en haut à gauche)
    2°) cliquer sur Option Excel (en bas à droite) Microsoft adore planqué les trucs
    3°) Cocher "Activer l'onglet Développeur dans le ruban"

    Un fois fait cela reste en place.

    Dans cet onglet il y a un groupe qui s'appelle Code (celui tout à gauche)
    Ton classeur Base de données doit être ouvert

    Tu vas cliquer sur "Enregistrer une macro" Puis tu sélectionnera tout ce que tu as a faire voir 2 post plus haut
    Surtout tu n’oublies pas d’arrêter l'enregistrement après sinon il va y avoir des soucis !

    Ensuite Tu cliques sur "Visual Basic" là tu vas voir un truc jaunes dans l'arrecence du classeur qui s'appelle Modules
    Tu clic tu clic tu clic jusqu'à apparaisse le code VBA et c'est ce code que je veux que tu post !

    Voilà

    @ bientôt

    PS : Bien sûr je sais le faire mais il m’apparais plus juste que tu saches le faire pour que puisse te débrouiller plus facilement.
    Une fois que tu as fait cela c'est pas fini il y a encore du taf !! Et ne t'inquiete pas je te laisse pas tomber.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Salut !!!

    En fait juste à ma pause méridienne ! (comme en plus il n'y a pas de pause le matin et l'après midi, cela ne me gène pas trop vu que je ne fume pas) On pédale tous comme des tarés et en plus il faut faire le boulot de ceux qui sont malade, j'estime que je peux prendre ma pause méridienne comme je le veux
    Anw ! La fameuse pause méridienne !!! Figure toi que je suis dans la même situation en tant que "non fumeur". Du coup je prends 20 minutes tous les jours pour descendre à la salle de sport de mon boulot (rire)

    Tu es sous 2007 Ok mais as-tu l'onglet "Développeur" ?
    Probablement pas puisque tu dis que tu connais rien au VBA
    Il faut savoir que lorsque l'on installe Excel l'onglet n'est pas actif !!!

    Pour cela il faut
    1°) cliquer sur le bouton Office (l'espèce de truc rond en haut à gauche)
    2°) cliquer sur Option Excel (en bas à droite) Microsoft adore planqué les trucs
    3°) Cocher "Activer l'onglet Développeur dans le ruban"

    Un fois fait cela reste en place.

    Dans cet onglet il y a un groupe qui s'appelle Code (celui tout à gauche)
    Ton classeur Base de données doit être ouvert

    Tu vas cliquer sur "Enregistrer une macro" Puis tu sélectionnera tout ce que tu as a faire voir 2 post plus haut
    Surtout tu n’oublies pas d’arrêter l'enregistrement après sinon il va y avoir des soucis !

    Ensuite Tu cliques sur "Visual Basic" là tu vas voir un truc jaunes dans l'arrecence du classeur qui s'appelle Modules
    Tu clic tu clic tu clic jusqu'à apparaisse le code VBA et c'est ce code que je veux que tu post !
    Merci pour la manipulation moi avant quand je faisais des macros je passais par "affichage" puis "macros"... Pour le coup je pense que c'est bon, j'ai pu exécuter la macro en sélectionnant les cellules qu'il faut prendre en compte dans mes deux onglets.

    Voici le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macrodiligence()
    '
    ' Macrodiligence Macro
    '
     
    '
        Columns("A:D").Select
        Sheets("Modele").Select
        ActiveWindow.SmallScroll Down:=-48
        Range("A1:B49").Select
    End Sub
    Merci encore infiniment pour ton aide

  10. #10
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,

    pour éviter des soucis d'affichage utilise les balises du prédéfinis du forum

    Le # est une balise pour insérer le code VBA cela donne cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macrodiligence()
    '
    ' Macrodiligence Macro
    '
     
    '
    Columns("A:D").Select
    Sheets("Modele").Select
    ActiveWindow.SmallScroll Down:=-48
    Range("A1:B49").Select
    End Sub
    c'est ton : D qui fait le smiley

    Bon alors là il fait pas grand chose juste des sélection
    ton : "ActiveWindow.SmallScroll Down:=-48" est à supprimer (c'est pour la position du curseur et cela aucun intérêt !)

    en fait j'attendais cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro1()
    '
    ' Macro1 Macro
    '
        Sheets("Feuil3").Copy
        ActiveWorkbook.SaveAs Filename:="C:\Users\Cyrille\Documents\toto.xlsx", _
            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End Sub
    Car j'avais dis :
    tu connais la méthode :
    - clic droit sur l'onglet
    - déplacer ou copier
    - cocher "créer une copie"
    - sélectionner "nouveau classeur" puis OK

    Tu peux demander à Excel de créer ma macro pendant que tu fais la manip et tu aura un bout de code que l'on arrangera après.
    et pour faire ce je disais c'est une seule ligne : "Sheets("Feuil3").Copy"
    L'autre ligne te permet de sauvegarder le nouveau classeur
    Maintenant il reste a faire la boucle pour sélectionner les nom adequat et créer le classeur qui va bien !.

    Pour faire cela il faut programmer il ne sait pas faire les conditions et les boucles par l'assistant

    Essais de faire un petit Algorithme détaillé Qui dit en gros :
    - je lis le nom
    - je vérifie si je dois créer un classeur
    - si oui je copie les info ds le modèle
    - je sauvegarde dans le nouveau classeur le modèle
    - je passe au suivant
    - je m’arrête qd c'est fini

    ATTENTION Ceci n'est qu'une indication pas du tout un Algorithme

    Il te faudra au moins une variable pour passer d'une ligne à l'autre

    @ Bientôt

    PS : pour faire des citations je te conseille d'utiser la balise QUOTE qui ressemble à une bulle de BD (juste à gauche de la balise CODE)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Après avoir relu une bonne dizaine de fois ta réponse je comprends rien du tout... Désolé

    En faite j'ai déjà un problème de compréhension du raisonnement je ne vois pas du tout où tu veux en venir. La je suis largué de chez largué désolé...

    en fait j'attendais cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro1()
    '
    ' Macro1 Macro
    '
        Sheets("Feuil3").Copy
        ActiveWorkbook.SaveAs Filename:="C:\Users\Cyrille\Documents\toto.xlsx", _
            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    End Sub
    Car j'avais dis :
    et pour faire ce je disais c'est une seule ligne : "Sheets("Feuil3").Copy"
    L'autre ligne te permet de sauvegarder le nouveau classeur
    Maintenant il reste a faire la boucle pour sélectionner les nom adéquat et créer le classeur qui va bien !.

    Pour faire cela il faut programmer il ne sait pas faire les conditions et les boucles par l'assistant

    Essais de faire un petit Algorithme détaillé Qui dit en gros :
    - je lis le nom
    - je vérifie si je dois créer un classeur
    - si oui je copie les info ds le modèle
    - je sauvegarde dans le nouveau classeur le modèle
    - je passe au suivant
    - je m’arrête qd c'est fini

    ATTENTION Ceci n'est qu'une indication pas du tout un Algorithme

    Il te faudra au moins une variable pour passer d'une ligne à l'autre
    Je comprends tout ça... Mais bon moi quand j'ai débuté sur Excel j'avais appris dans l'ancienne méthode avant VB donc j'utilisais un tas de formules conditionnelles pour arrivé à mes fins... les algo sur VBA j'y connais rien du tout !!! (désolé de me répéter)

    Moi en gros je m'attendait plus a des indications de formules à mettre du genre :

    - je lis le nom =formule(colonneXligneY)
    - je vérifie si je dois créer un classeur =formule vérifier(colonneXligneY)

  12. #12
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,
    Juste pour que tes posts soient clair utiles les balises :
    Salut,

    pour éviter des soucis d'affichage utilise les balises du prédéfinis du forum

    Le # est une balise pour insérer le code VBA
    PS : pour faire des citations je te conseille d'utiser la balise QUOTE qui ressemble à une bulle de BD (juste à gauche de la balise CODE)
    Bon alors concernant notre problème ...
    Après avoir relu une bonne dizaine de fois ta réponse je comprends rien du tout... Désolé

    En faite j'ai déjà un problème de compréhension du raisonnement je ne vois pas du tout où tu veux en venir. La je suis largué de chez largué désolé...
    Moi en gros je m'attendait plus a des indications de formules à mettre du genre :

    - je lis le nom =formule(colonneXligneY)
    - je vérifie si je dois créer un classeur =formule vérifier(colonneXligneY)
    Tu pense comme les Macros Excel 4.0 et non comme un langage de programmation c'est pour ça que tu n'y arrive pas et que tu comprends rien.

    Dis moi tu dis que tu es "développeur informatique" dans ton profil c'est quel(s) langage(s) que tu as appris ?

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Bon alors concernant notre problème ...


    Tu pense comme les Macros Excel 4.0 et non comme un langage de programmation c'est pour ça que tu n'y arrive pas et que tu comprends rien.

    Dis moi tu dis que tu es "développeur informatique" dans ton profil c'est quel(s) langage(s) que tu as appris ?
    C'est bien ça mon problème! Je ne connais rien du tout en VBA (et oui je me répète...). En faite oui, j'ai appris à l'époque sur le tas à codifier sur Excel 4.0 avec les critères en formules conditionnelles... J'y arriverais bien en plus! Mais aujourd'hui tout est en VB.... C'est pour ça que je sollicite ton aide mon ami.

    Désolé pour ce que j'ai mis sur mon profil en "développeur informatique" je suis informaticien dans une association...

    Merci d'avance de ton aide mon ami !

  14. #14
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,

    Bon au vu de ta réponse je comprends mieux tes soucis.
    Pas de problème je vais t'aider tout va bien se passer

    On va reprendre en douceur.
    Tout d'abord quelques notion d’algorithmie:
    ----------------------------------------------------------------------
    1) notion affectation
    a <- b ( le <- est une flèche pour signifier le sens de l'affectation)
    la valeur de b va dans a

    si au départ a = 3 et b = 1 alors après a = 1

    la flèche va toujours ds le même sens

    pour coder en VBA c'est un "="
    ici ds l'exemple on code en VBA a = b

    Est- ce que tu comprends cette première notion ?

    -----------------------------------------------------------------------
    2) notion de boucle (c'est un peu plus dur, mais abordable tout de même)
    faire
    ...
    (tout le travail à faire comme par exemple copier des données, créer un classeur etc ...)
    ...
    boucle tant que condition est vrai
    le type de condition peut-être tant le contenu de la cellule n'est pas vide continuer sinon je m'arrête !
    en VBA cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    do
          ....
    loop While cells(lign,colonne).value <> ""
    ------------------------------------------------------------------------
    3) notion de test (ou condition)

    si tu connais les formules Si c'est tout simple

    si condition alors
    .....
    sinon
    .....
    fin si
    en VBA cela donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If   condition  (exemple a=b) then
          b = b+1  (j'affecte la valeur de b +1 dans la variable b)
    else
          a=b   (j'affecte la variable b dans a)
    end if

    Voici 3 notions qui te permettrons de mieux comprendre les pgms VBA

    dis moi si tu as tout compris

    à bientôt

    PS : C'est bien tu utilises les balises mais évite de mettre en gras cela signifie crier et tu n'as pas besoin de crier

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Désolé encore pour la réponse tardive mais j'ai du lire à plusieurs reprise ce que tu m'as mis... (le boulet). Je pense avoir compris une partie du raisonnement qui en soit n'est pas très loin de l'ancien language que j'utilisai sous excel 4.0.

  16. #16
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Salut,

    En cette periode de Noël je t'ai fait 2 versions une avec des fichiers .xls générés l'autre avec des fichiers .xlsx générés.

    attention si tu veux garder les macros tu dois renommer ton fichier BASEdonnées.xlsx en BASEdonnées.xlsm sinon les macros ne seront pas gardées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Option Explicit ' Exige la déclaration explicite des variables
     
    Public Nom As String
    Public Fic_Dili As String
    Public Num_Dos As String 'Chaine car je ne sais pas si cest du numérique ou pas
    Public Lign As Long ' Variable permettant de changer de ligne
     
    Public Const Chem = "L:\Travail\_developpez\ExcelLiod\"
     
    '************************************************************
    ' Macro Creat_Dili
    ' Macro créant des fichiers Diligences a base du modèle joint
    '************************************************************
    Sub Creat_Dili()
        On Error Resume Next
        Lign = 2 ' on commence sur la ligne 2
     
        ' afficher la feuille qui contients les noms
        Sheets("Feuil1").Select
     
        Do      'Boucle pour passer en revu tous les noms
            ' On test si le fichier est clos. UCase permet de
            '  transformer les minuscules en majuscules
            If UCase(Cells(Lign, 3).Value) <> "X" Then
                'On recupères les valeurs pour les copier dans le modèle
                Nom = Cells(Lign, 2).Value
                Fic_Dili = Chem & Cells(Lign, 4).Value
                Num_Dos = Cells(Lign, 1).Value
                Sheets("Modele").Select
                Cells(2, 2).Value = Nom
                Cells(3, 2).Value = Num_Dos
                ' On copie la feuille
                Sheets("Modele").Copy
                ' on copie ds un classeur de format 2003
                ActiveWorkbook.SaveAs Filename:=Fic_Dili, FileFormat:=xlExcel8, _
                    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
                    CreateBackup:=False
                'on ferme le nouveau classeur
                ActiveWindow.Close
            End If
            Lign = Lign + 1
            Sheets("Feuil1").Select
        Loop While Cells(Lign, 1).Value <> ""
     
        'Pour faire propre on peut effacer ce que contient la feuille modele (facultatif)
        Cells(2, 2).Value = ""
        Cells(3, 2).Value = ""
     
     
    End Sub
     
    '************************************************************
    ' Macro Creat_Dili version fichier 2007
    ' Macro créant des fichiers Diligences a base du modèle joint
    '************************************************************
    Sub Creat_Dili_2007()
        On Error Resume Next
        Lign = 2 ' on commence sur la ligne 2
     
        ' afficher la feuille qui contients les noms
        Sheets("Feuil1").Select
     
        Do      'Boucle pour passer en revu tous les noms
            ' On test si le fichier est clos. UCase permet de
            '  transformer les minuscules en majuscules
            If UCase(Cells(Lign, 3).Value) <> "X" Then
                'On recupères les valeurs pour les copier dans le modèle
                Nom = Cells(Lign, 2).Value
                Fic_Dili = Chem & Cells(Lign, 4).Value & "x"
                Num_Dos = Cells(Lign, 1).Value
                Sheets("Modele").Select
                Cells(2, 2).Value = Nom
                Cells(3, 2).Value = Num_Dos
                ' On copie la feuille
                Sheets("Modele").Copy
                ' on copie ds un classeur de format 2003
                ActiveWorkbook.SaveAs Filename:=Fic_Dili, FileFormat:=xlOpenXMLWorkbook, _
                    CreateBackup:=False
                'on ferme le nouveau classeur
                ActiveWindow.Close
            End If
            Lign = Lign + 1
            Sheets("Feuil1").Select
        Loop While Cells(Lign, 1).Value <> ""
     
        'Pour faire propre on peut effacer ce que contient la feuille modele (facultatif)
        Cells(2, 2).Value = ""
        Cells(3, 2).Value = ""
    End Sub
    Tu dis ce que tu en penses

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Un grand merci Igloobel !! Cette macro répond exactement à ce que je voulais!! Elle fonctionne à merveille!!

    Mais surtout un grand merci pour l'apprentissage, car aujourd'hui j'ai compris une partie du language VB. Et maintenant je vais pouvoir tenter la programmation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Macro pour nommer un fichier selon un signet ou le nom d'une cellule
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/03/2014, 12h40
  2. [Toutes versions] Macro pour sélectionner des lignes selon un critère
    Par logoyvelines dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/09/2011, 11h20
  3. Réponses: 10
    Dernier message: 21/07/2010, 17h08
  4. [VBA-E] Macro pour convertir un fichier texte en excel
    Par Nicolas67 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/05/2006, 15h47
  5. Boucle en Dos pour lister des fichiers selon une date
    Par Corben dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 17/12/2005, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo