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 :

AJustement Array suivant nombre de colonnes [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut AJustement Array suivant nombre de colonnes
    Bonjour,

    Avec le code suivant (fait par Mercatog, que je remercie) je récupère des données sur une feuille pour effectuer des calculs.
    On me demande de rajouter une autre feuille pour d'autres calculs. J'ai pu adapté ce code pour la 2ème feuille, mais je me retrouve avec 2 macros presque identiques. Sauf pour le nombre de colonnes sur les 2 feuilles de destination (sur feuille "Calcul" 13 colonnes et Feuille "Densité" 9 colonnes).

    J'ai eu beau retourné le problème pour n'en faire qu'une seule macro rien n'y fait. J'ai pensé mettre le nom des feuilles dans un tableau variable [temp("Calcul","Densité"] et le nombre de valeurs de la ligne 9 contenant les entêtes dans une autre variable. Mais je n'ai pas su trouvé la solution.
    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
    Sub Traitement()
    Dim LastLig As Long, i As Long, j As Long
    Dim Dte As Long, Val4 As String, Val5 As String
    Dim Tb, Res()
    Dim k As Byte
     
    Application.ScreenUpdating = False
     
    With Worksheets("BD")
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        Tb = .Range("A2:W" & LastLig)
    End With
     
    With Worksheets("Calcul")
        Dte = CLng(.Range("B1"))
        Val4 = .Range("F1")
        Val5 = .Range("J1")
     
        For i = 1 To LastLig - 1
            If CLng(Tb(i, 3)) = Dte And Tb(i, 4) = Val4 And Tb(i, 5) = Val5 Then
     
                j = j + 1
     
                ReDim Preserve Res(1 To 12, 1 To j)
     
    	    Res(1, j) = j
                Res(2, j) = Tb(i, 7)
                Res(3, j) = Tb(i, 8)
                Res(4, j) = Tb(i, 9)
                Res(5, j) = Tb(i, 10)
                Res(10, j) = Tb(i, 15)
                Res(11, j) = Tb(i, 16)
     
            End If
        Next i
     
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        If LastLig > 10 Then .Range("A10:L" & LastLig).Clear
        If j > 0 Then .Range("A10").Resize(j, 12) = Application.Transpose(Res)
     
    End With
    End Sub
    Je vous remercie beaucoup pour votre aide.

    Cordialement

  2. #2
    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
    Si la feuille Densité n'a que 9 colonnes, comment est faite l'affectation des valeurs des lignes 26 à 32 du code?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tout d'abord, toutes mes excuses par rapport à la précédente discussion.

    J'ai mis ton code et non celui que j'ai modifié.
    Je n'ai modifié que ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Res(1, j) = j
    Res(2, j) = Tb(i, 7)
    Res(3, j) = Tb(i, 8)
    Res(4, j) = Tb(i, 9)
    Res(8, j) = Tb(i, 16)
    Res(9, j) = Tb(i, 17)
    En te remerciant beaucoup.

    Cordialement,

  4. #4
    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
    Si tu recommence ton explication avec exactitude.

    Tu as un code qui fonctionne pour la feuille Calcul où en final tu récupère un tableau de 12 colonnes sur la base d'un organisation entres colonnes.

    Maintenant, tu veux adapter le même code pour qu'il fonctionne pour la feuille Densité où en final tu désires récupérer un tableau de 9 colonnes sur la base d'une autre organisation entre colonnes.

    En final, le souhait c'est de faire un seul code qui gère les 2 cas.

    C'est très faisable, seulement il faudra que tu montre la correspondance entre colonnes de la feuille BD et les feuilles Calcul (déjà faite) et Densité.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    L'organisation de la feuille "Densité" est pratiquement la même que la feuille "Calcul" avec seulement 2 colonnes en moins.
    C'est juste le traitement qui différe (Formules différentes, indices et paramètres).

    En fait, j'aurais pu faire tous les calculs sur ma même feuille; mais on m'exige de les faire sur des feuilles différentes.
    J’espère seulement qu'on ne me demandera de rajouter autre chose.

    Je te remercie beaucoup pour ton aide.

    Cordialement,

  6. #6
    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
    Et c'est si difficile de copier le même tableau Res une autre fois ailleurs (ligne 39 du code) et de supprimer sur la feuille les colonnes indésirées?

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

Discussions similaires

  1. ajustement formule au nombre de lignes et colonnes
    Par jeje644 dans le forum Excel
    Réponses: 9
    Dernier message: 28/10/2014, 09h46
  2. Réponses: 2
    Dernier message: 13/05/2009, 14h47
  3. [JTable] ajuster la taille d'une colonne à la taille du texte
    Par GETah dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 24/02/2005, 11h53
  4. [JTextArea]changer dynamiquement le nombre de colonnes
    Par MrDuChnok dans le forum Composants
    Réponses: 9
    Dernier message: 27/04/2004, 13h31
  5. [RDB$PRIMARY] Nombre de colonnes
    Par Lucien dans le forum InterBase
    Réponses: 4
    Dernier message: 17/01/2004, 12h55

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