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 :

[VBA]tableau de cellules


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut [VBA]tableau de cellules
    Bonsoir,

    J'ai deux tableaux distincts correspondants à deux années différentes!
    Sur la première colonne j'ai des numéros de comptes qui correspondent
    à des nombres.
    ex
    compte 1 nombre1
    compte 2 nombre2
    compte 3 nombre3
    ...
    avec compte 1<compte 2<compte 3...

    sur le deuxième tableau j'ai
    compte 1' nombre1'
    compte 2' nombre2'
    compte 3' nombre3'

    en fait je voudrais avoir dans chacun des deux tableaux tous les comptes ;si le compte existait dans un seul des deux tableaux
    je lui dis de le mettre à 0 dans l'autre.

    Ceci permet de comparer un compte d'une année sur l'autre.

    Quelqu'un peut il m'indiquer le principe à utiliser?

    merci

    ex:

    N compte libellé Année N-1
    101000 425
    101100 425
    104230 425
    107450 425
    110620 425
    125420 425
    129530 425
    321000 425
    321300 425
    421000 425
    531000 425
    551000 425
    621000 425
    712000 425

    N compte libellé Année N
    101000 300
    101100 300
    104230 300
    108320 300
    110620 300
    125420 300
    129530 300
    321000 300
    321300 300
    421000 300
    452000 300
    551000 300
    621000 300
    712000 300
    761000 300


    et je voudrais au final:

    N compte libellé Année N-1
    101000 425
    101100 425
    104230 425
    107450 425
    108320 0
    110620 425
    125420 425
    129530 425
    321000 425
    321300 425
    421000 425
    452000 0
    531000 425
    551000 425
    621000 425
    712000 425
    761000 0

    N compte libellé Année N
    101000 300
    101100 300
    104230 300
    107450 0
    108320 300
    110620 300
    125420 300
    129530 300
    321000 300
    321300 300
    421000 300
    452000 300
    531000 0
    551000 300
    621000 300
    712000 300
    761000 300


    j'espère être clair.

    merci

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Tu as très clairement exposé ta question.... MERCI

    Il manque juste des petites précisions :

    1) Sur chacune des 2 feuilles, le début de la liste (hors titre éventuel) commence-t-il à un endoit fixe ?
    2) y a-t-il des cellules remplies après la fin de la liste ?
    3 ta liste comprend-elle des lignes pouvant être vides ?

    Voilà : je pense qu'avec ces indications, tout sera complet et qu'il pourra ainsi être évité de se "raccrocher aux branches" en chemin


  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    En fait il s'agit de comparer la balance de l'année N-1 à l'année
    N on utilise ceci en comptabilité.
    Quand la balance contient plus de mille lignes, et que de
    nouveaux comptes apparaissent, ou que d'autres disparaissent
    ou sont à zero, il faut un système qui rajoutent les comptes
    manquants dans les années N-1 et N, pour pouvoir comparer
    pour un même compte l'année N à l'année N-1

    Pour répondre à ta question, cela commence à la première
    ligne avec le libellé, puis à partir de la deuxième ligne on attaque
    les numéros de compte.
    Il n'y a pas de lignes vides, et et il n'y rien en dessous de la balance.

    est ce que cela te suffit?

    Merci!

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Tout est maintenant parfait puisque l'on sait comment raisonner sans failles.

    Je ne connais pas suffisamment VBA et laisse donc à ceux qui en connaissent la syntaxe le soin d'exprimer ceci :

    1) lister dans un array ou autre, les articles de la feuille 2
    2) faire une boucle sur les articles de la feuille 1 et
    - si article présent dans liste : ignorer sinon ajouter (à la fin) une ligne dans feuille 1 avec article en 1ère cellule et 0 en seconde
    3) trier par article

    Faire ensuite la même chose avec la feuille 1 (pour la boucle) et feuille 2 (pour les ajouts)

    :

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    OUi c'est ca, à part que les numéros de comptes sont dejà triés;
    il suffit juste de rajouter une ligne s'il y a un compte manquant
    d'une année qur l'autre

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Rajouter cette ligne à la fin et retrier me semble plus facile que de rechercher l'endroit où l'insérer.

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bon moi je te propose de faire une procédure à laquelle tu donne 2 plages en paramétres .. la plage Source .. contenant une liste de compte.. et la plage destination dans laquelle les comptes présent dans la plage source vont être rajouté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
     
    '
    ' Procedure met à jour Dest, rajoute
    ' dans rDestination les
    ' Comptes présent dans sources
    '
    Sub MajDest(rSource As Range, rDest As Range)
    Dim i As Integer
    Dim j As Integer
    j = 2
    For i = 2 To rSource.Rows.Count
       While (j <= rDest.Rows.Count) And rSource.Cells(i, 1) > rDest.Cells(j, 1)
         j = j + 1
       Wend
       If (rSource.Cells(i, 1) < rDest.Cells(j, 1)) Or (j > rDest.Rows.Count) Then
         rDest.Cells(j, 1).EntireRow.Insert xlShiftDown
         rDest.Cells(j, 1) = rSource.Cells(i, 1)
         rDest.Cells(j, 2) = 0
         j = j + 1
       End If
     
    Next
    End Sub
    ensuite il suffit d'appeller 2 fois la procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub RajouteComptes()
     Dim rN As Range 'N
     Dim rN1 As Range 'N-1
     
     Set rN = Sheets("N").Range("A1").CurrentRegion
     Set rN1 = Sheets("N-1").Range("A1").CurrentRegion
     MajDest rN, rN1
     MajDest rN1, rN
    End Sub


  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    A vue d'oeil cela semble très bon. Manque plus qu'à retrier.

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par jmfmarques
    A vue d'oeil cela semble très bon. Manque plus qu'à retrier.
    il n'y a rien a trier tout est dans l'ordre....

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Juste ! J'avais pas vu le "si <"

    Bravo.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    En fait j'ai testé, cela marche bien et en plus c'est astucieux
    comme programme.
    Disons qu'il y a le fonds et la forme!
    Encore merci!

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    Adapté chez moi cela donne ça!

    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
     
    '
    ' Procédure met à jour Dest, rajoute
    ' dans rDestination les
    ' Comptes présent dans sources
    '
    Sub MajDest(rSource As Range, rDest As Range)
    Dim i As Integer
    Dim j As Integer
    j = 2
    For i = 2 To rSource.Rows.Count
       While (j <= rDest.Rows.Count) And rSource.Cells(i, 1) > rDest.Cells(j, 1)
         j = j + 1
       Wend
       If (rSource.Cells(i, 1) < rDest.Cells(j, 1)) Or (j > rDest.Rows.Count) Then
         rDest.Cells(j, 1).EntireRow.Insert xlShiftDown
         rDest.Cells(j, 1) = rSource.Cells(i, 1)
         rDest.Cells(j, 2) = rSource.Cells(i, 2)
         rDest.Cells(j, 3) = 0
         j = j + 1
       End If
     
    Next
    End Sub
     
     
    Sub RajouteComptes()
     Dim rN As Range 'N
     Dim rN1 As Range 'N-1
     
     Set rN = Sheets("N").Range("A1").CurrentRegion
     Set rN1 = Sheets("N-1").Range("A1").CurrentRegion
     MajDest rN, rN1
     MajDest rN1, rN
    End Sub

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    donc :

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    oui

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

Discussions similaires

  1. [VBA W] : fusionner cellules vides dans tableau
    Par camzo dans le forum VBA Word
    Réponses: 6
    Dernier message: 26/09/2007, 17h01
  2. Réponses: 6
    Dernier message: 03/01/2006, 13h36
  3. [VBA]Sélection de cellules
    Par joseph1 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2005, 18h08
  4. Aide débutant instruction VBA tableau Excell
    Par damien33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2005, 10h31
  5. [VBA] Evenement Click Cellule
    Par kribot dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/01/2005, 09h47

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