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 :

Traduire un algo en vba ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut Traduire un algo en vba ?
    Quelqu'un pourrait-il m'aider à traduire en vba un algorithme que j'ai écrit en langage naturel s'il vous plait ?
    Si ce n'est pas trop compliqué bien sur, je ne me rends pas trop compte car je m'y connais très peu en vba.
    je pense exécuter cet algorithme à l'ouverture d'excel mais si il y a mieux à faire, dîtes-moi.
    Le voici :

    soit nom-feuille une variable de type feuille
    nom-feuille = 1

    soit num-cellule une variable de type cellule

    soir nom-classeur une variable de type classeur

    tant que nom-feuille inférieur à 47
    faire

    nom-classeur = la variable nom-feuille suivi de -PPI.xlsx (par exemple 1-PPI.xlsx)

    pour num-cellule de A1 à D20, sauf les cellules vides
    (c'est à dire A1, A2...A20, pui B1, B2...B20 etc. jusqu'à D20 sauf les cellules vides)
    faire

    la valeur de la cellule num-cellule de la feuille nom-feuille
    = la valeur de la cellule num-cellule de la feuille A
    du classeur nom-classeur dont le chemin d'accès est C:\

    fin de la bouche pour

    nom-feuille = nom-feuille+1
    fin de la boucle tant que

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    ... car je m'y connais très peu en vba....
    Alors, il est temps de t'investir un peu en te documentant, je ne connaissais rien non plus et me suis formé seul à l'aide des différents tutos sur internet, je suis encore loin, très loin de tout maitriser

    Excuses-moi de te répondre comme ça
    bon travail et bon courage
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut
    En gros tu me dis : "démerdes-toi" ?
    Trop sympa le type...
    Même pas une amorce de conseils ou de tuyaux ?
    Tu sais c'est pas évident quand on veut faire un truc plutôt compliqué pour un novice.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour.

    Faut savoir ce que l'on veut …


    Les meilleurs cours et tutoriels pour Excel


    Tu peux aussi utiliser l'Enregistreur de macros donnant ainsi une base de code, certes à nettoyer mais c'est toujours cela …


  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Par défaut
    Un conseil : lis ce cours.

    Comme tu as déjà fait l'algorithme :
    je te conseille de lire les chapitres :
    - les variables
    - les structures décisionnelles
    - les boucles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub test()
     
    Dim wbk As Workbook
    Dim wsh As Worksheet
     
    Set wbk = Workbooks("NomClasseur")
    Set wsh = wbk.Worksheets("NomFeuille")
     
    wsh.Cells(1, 1) = "hello"
    wsh.Range("A1") = "hello"
     
     
    End Sub
    ATTENTION A NE PAS CONFONDRE FEUILLE ET CLASSEUR.
    Un classeur contient X feuilles, chaque feuille contient un ensemble de cellules.


    Bon courage à toi, à toi de t'investir au reste.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut
    merci je vais essayé

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    En gros tu me dis : "démerdes-toi" ?
    Trop sympa le type...
    Tel n'était pas mon propos, on voit trop de personnes qui cherchent à faire faire leur travail par les autres, sinon je ne pense pas que qui que se soit puisse dire que je laisse les gens se demmerder, comme tu le dis si bien. Je ne vois pas ce que je ferais dans ce forum.

    Encore désolé que tu ais mal interprété mes propos et bonne journée quand même
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Surtout Dominique si tu ne l'avais pas écrit avant moi, j'aurais été encore plus cash que toi ! …



  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut
    C'est bon, finalement on m'a donné le bon code sur un autre forum, ça marche bien :P, le voici au cas où :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_Open()
    Dim w As Worksheet, nf As Long, F As String
    Application.DisplayAlerts = False 'si un fichier n'existe pas
    For Each w In Worksheets
      nf = Val(w.Name)
      If nf > 0 And nf < 47 Then
        F = "=IF('C:\[" & nf & "-PPI.xlsx]A'!RC="""","""",'C:\[" & nf & "-PPI.xlsx]A'!RC)"
        w.[A1:D20].FormulaR1C1 = F
        w.[A1:D20] = w.[A1:D20].Value 'facultatif, pour ne garder que les valeurs
      End If
    Next
    End Sub
    Merci quand même

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Encore une fois, sans être polémique, as-tu compris le code qu'on t'a proposé ?, l'as-tu analysé ?, a-t-il pu t'aider à comprendre le langage VBA ? en résumé : as-tu avancé dans tes investigations ?

    Crois-moi, je serais content que tu répondes simplement par un "OUI", sinon ça prouverait que mes paroles (donc mes écrits) n'étaient pas vaines
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut
    oui, évidemment
    je n'ai pas encore tout compris mais justement je m'y interesse et le fait d'analyser ce code ça m'a bien fait avancer dans la compréhension de ce langage
    depuis j'ai même modifié le code pour l'améliorer à ma sauce.
    le voici :

    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
    Dim w As Worksheet, nf As Long, F As String, sNomFichier As String
     
    Application.DisplayAlerts = False 'si un fichier n'existe pas
     
    For Each w In Worksheets
      nf = Val(w.Name)
      If nf > 0 And nf < 47 Then
     
       sNomFichier = "C:\Users\dgino\Desktop\" & nf & "-PPI.xlsx"
       If Dir(sNomFichier) <> "" Then 'vérifie si le fichier existe
     
        F = "=IF('C:\Users\dgino\Desktop\[" & nf & "-PPI.xlsx]A5 - N+2'!R[3]C[2]="""","""",
    'C:\Users\dgino\Desktop\[" & nf & "-PPI.xlsx]A5 - N+2'!R[3]C[2])" 
    'le r[3]C[2] permet de décaler les cellules visées de 3 cases vers la droite et de 2 vers le bas
        w.[A1:D20].FormulaR1C1 = F
        'w.[A1:D20] = w.[A1:D20].Value 'facultatif, pour ne garder que les valeurs
     
       End If
      End If
    Next
    et je compte encore le complexifier par la suite

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Par défaut
    A présent, je voudrais modifier ce code pour qu' en parcourant de A1 à D20, dès qu'une cellule vide est trouvée, la recopie s’arrête (ce qui n'est pas le cas pour le moment).
    Par exemple voici les valeurs des cellules à copier : A1=1, A2=2 A3="" (vide), A4=1,... B2="" (vide),...D20=1 etc.
    ça recopiera uniquement les cellules A1 et A2, et non A4, ni les suivantes.
    je n'arrive pas à comprendre comment je peux coder ça avec mon bout de code.
    Si vous aviez la gentillesse de me donner des indications sur comment je pourrais faire ça s'il vous plait...

Discussions similaires

  1. Debutante, transposition d'un algo en vba
    Par Genny dans le forum IHM
    Réponses: 5
    Dernier message: 25/01/2008, 10h13
  2. algo rotative vba
    Par omlov88 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 18/01/2008, 13h06
  3. traduire un algo en clair en code VBA
    Par jover dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/12/2007, 10h14
  4. [vba access] traduire du fortran en vba
    Par sun19 dans le forum VBA Access
    Réponses: 1
    Dernier message: 26/11/2006, 07h01
  5. [RegEx] Traduire des "expression régulières" VBA en PHP
    Par jcachico dans le forum Langage
    Réponses: 13
    Dernier message: 19/01/2006, 14h02

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