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 à Terminer


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut Macro à Terminer
    *Bonjour *

    J'ai déja la macro

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    Option Explicit
    Option Base 1
     
    Const codeb = 19
    Const lideb = 20
    Const lifin = 619
    Const cofin = 158
    Const nbco = cofin - codeb + 1
    Const nbli = lifin - lideb + 1
    Const nbcas = 9
    Const FeuilleSource = "Data"
    Const coldeb = "S"
    Const colfin = "FB"
    Const plage = coldeb & lideb & ":" & colfin & lifin
    Const colonnes = "A:FB"
    Const NomGeneriqueFeuille = "Cas "
     
    Sub RemplirUneFeuille(nucas As Long)
    Dim li As Long, co As Long, lires As Long, nbchange As Long
    Dim Tligne
    Dim Tchange
    Dim ligne As String
    Dim vcour As Variant, vprec As Variant
    Dim FeuilleRes As String
     
     
     
      FeuilleRes = NomGeneriqueFeuille & nucas
      lires = lideb 'liresdeb
        ' on met la ligne li dans Tligne, on initialise Tchange
        For li = lideb To lifin
          ligne = coldeb & li & ":" & colfin & li
          Tligne = Sheets(FeuilleSource).Range(ligne).Value
          Tchange = Tligne
        '  MsgBox (Tligne(1, 34))
          For co = 1 To nbco
            If Tligne(1, co) = "" Then
              Tchange(1, co) = ""
            Else
              Tchange(1, co) = 0
            End If
          Next co
          ' on traite les changements ligne li
          nbchange = 0
            For co = 1 To nbco - 1
              vprec = Tligne(1, co)
              vcour = Tligne(1, co + 1)
              If (vcour = "" Or vprec = "") Then
                ' rien
              Else
                If vcour <> vprec Then
                  nbchange = nbchange + 1
                  If nbchange = nucas Then
                    Tchange(1, co + 1) = nbchange
                    nbchange = 0
                  End If
                End If
              End If
            Next co
          ' affichage de Tchange en ligne lires de FeuilleRes
          Sheets(FeuilleRes).Range(ligne).Value = Tchange
          lires = lires + 1
        Next li
    End Sub
     
    Sub Toutes()
    Dim numcas As Long, nbfeuilles As Long
    Dim NomFeuille As String, Feuille As Variant
      ' creation des nbcas feuilles
      Application.ScreenUpdating = False
      Application.DisplayAlerts = False
     
      For Each Feuille In Sheets
    If Feuille.Name <> "Data" Then Feuille.Delete
      Next
     
      Application.DisplayAlerts = True
     
      For numcas = 1 To nbcas
         NomFeuille = NomGeneriqueFeuille & numcas
         nbfeuilles = Sheets.Count
         ' ajouter une feuille
         Sheets.Add
         ActiveWindow.Zoom = 75
         ActiveSheet.Name = NomFeuille
     
         ActiveSheet.Columns(colonnes).HorizontalAlignment = xlCenter
     
         With ActiveSheet.Range(plage)
           .FormatConditions.Delete
           .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual, Formula1:="1"
           .FormatConditions(1).Interior.ColorIndex = 40
     
     
         End With
     
         Sheets(NomFeuille).Move after:=Sheets(Sheets.Count)
      Next numcas
      Application.ScreenUpdating = True
      ' remplir les nbcas feuilles
      For numcas = 1 To nbcas
        RemplirUneFeuille (numcas)
      Next numcas
    End Sub
    en module2 la macro marche bien mais ne fait pas de différence si le chiffre augmente ou diminu elle met juste un 1(pour le premier cas) si le chiffre change d'une colonne à l' autre sur une meme ligne, un 2 au deuxième changement pour le cas 2...jusqu'au cas 9)que j'arrive pas à développer comme je le veux
    J'ai des chiffres dans la feuille Data et je veux:
    pour le premier onglet à créer par exemple pour la ligne 20 que la macro me mette un 0 si le chiffre est le meme que la colonne précédente, un -1 si le chiffre est inferieur à la colonne précédente et un 1 si le chiffre est superieur.
    et ce jusqu'à la ligne 619(j'ai commencé ce cas dans le feuille que j'ai appelé Cas1que je veux)
    Pour le cas2 je l'ai aussi commencé dans la feuille que j'ai appelé cas2que je veux:
    pour ce cas on met un -2 au deuxième -1 qu'on a sur la ligne et le premier -1 jveux le mettre à 0 et un +2 au deuxième 1 qu'on a sur la meme ligne....et ca jusqu'au cas 3.
    Merci il doit pas y avoir grand chose à modifier j'ai essayé en module 3 mais ca marche pas ca me met des 0 partout, si c fesable avec des formules excel je vois pas comment faire mais c bon aussi.

    Merci beaucoup.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    ca me parait bien complique tout ce que tu racontes la

    Entre le code et les explications, je suis personnellement completement paume.

    A quoi correspondent tes "Cas"?

    Serait-il possible que tu fasses une serie de questions precises sur ce que tu souhaites / ce que tu as obtenu jusqu'a present/ ce sur quoi tu bloques / la ou tu as besoin d'aide stp ?

    Merci pour nous
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut
    Merci beaucoup de me répondre jpcheck
    Par exemple supposons qu'à la ligne 20(première ligne ou j'ai mes chiffres)
    on a les chiffres suivant de la colonne BA à BT :

    25 25 25 26 26 21 21 29 29 38 38 38 37 37 37 49 49 49 10 10

    alors avec ma macro j'ai (pour l'onglet cas 1) de BA20 à BT20:
    0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0(donc un 1 si sur cette ligne le chiffre change d'une colonne à l'autre et 0 sinon sans se préocuper si le chiffre augment ou diminu)

    et pour le cas 2 dans mon onglet cas 2 :
    0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 2 0 0 0 0 (donc un 2 sur la ligne en question au deuxième changement de chiffre et 0 sinon) ....jusqu'au cas9

    Ce que je veux c modifier la macro ou avec des formules excel pourquoi pas mais je sais pas comment faire, de sorte à prendre en compte le fait que la chiffre augment ou diminu:avec la nouvelle macro, j'aimerai en onglet cas 1:
    0 0 0 1 0 -1 0 1 0 1 0 0 -1 0 0 1 0 0 -1 0

    et en cas 2:
    0 0 0 0 0 0 0 2 0 0 0 0 -2 0 0 2 0 0 -0 0 donc un 2 si le chiffre augmente pour la deuxième fois(si ya déja un 1 avant puis remettre le compteur à 0) et un -2 si le chiffre augmente pour la deuxième fois (consécutivement ou pas, si y'a déja un -1 avant et remettre le compteur à 0)

    merci encore

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    pour la detection par formule de la modification tu peux partir sur un simple
    en B2 pour la ligne 1 par exemple
    =SI(B1<>A1,1,0)
    ensuite, tu compliques d'un cran en mettant +1 si tu as B1>A1 et -1 si B1<A1
    =SI(B1<>A1,SI(B1>A1,1,-1),0)
    pour le coup du cas 2, tu peux faire une somme progressive
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    @ andrea
    Si tu pourras mettre ici un exemple concret des données brutes et du résultat escompté.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 61
    Par défaut
    Merci à vous deux de me répondre.

    une somme progressive, ca veut dire rajouter un autre si?? sinon j'essai mais j'arrive pas ou plutot je vois pas car pour avoir un -2 on peut avoir un ou plusieurs +1 entre les deux -1, donc un -2 n'arrive pas après deux -1 consécutif.

    Merci mercatog à toi aussi, j'avais mis un fichier excel sur cijoint.fr, j'avais mis l'adresse ici mais ca a du etre bloquer jcomprends pas c pas possible de déposer des fichiers excel sur ce site???

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

Discussions similaires

  1. Vérification Macro Terminée
    Par EnzoExcel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/12/2014, 11h11
  2. [XL-2003] Double conditions pour terminer une macro
    Par ThSPB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/03/2011, 16h28
  3. Message "terminé" apres execution d'un macro
    Par VELO1222 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2011, 19h09
  4. Macro timer sur terminal Bray
    Par kurtabar dans le forum Autres systèmes
    Réponses: 1
    Dernier message: 09/07/2009, 14h11

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