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 :

problème code pour remplir un fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 211
    Points : 76
    Points
    76
    Par défaut problème code pour remplir un fichier Excel
    coucou tout le monde

    Je cherche à remplir un fichier Excel à partir d'un autre. Pour cela j'utilise 3 tableaux :
    • Un où je mets le contenu de mon fichier Actuel : tableau1,
    • un autre ou je mets le contenu de mon fichier qui me permettra de modifier le premier fichier : tableau2
    • et un troisième ou je mettrais la mise à jour de mon premier fichier.


    Ce que je cherche à faire et le suivant:

    Je compare mes deux tableaux tableau1 et tableau2 une fois que la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau1(i,2) = tableau2(j,1)
    tel que tableau1(1,1) par exemple est la cellule A1 du fichier1 idem pour tableau2

    Donc, une fois que j'ai égalité, je regarde le contenu de tableau2(j,5) (cellule EJ de mon fichier2). Si sa valeur est différente du vide tableau3(i,1) = "D", sinon je regarde la cellule FJ. Si elle est différente du vide je mets tableau3(i,1) = "c"

    Voici la partie du code où je trouve des problèmes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        ReDim Tableau3(UBound(Tableau1, 1), 10)
        Windows(Fichier_analyse).Activate
            For i = LBound(Tableau1, 1) To UBound(Tableau1, 1)
                For j = LBound(Tableau2, 1) To UBound(Tableau2, 1)
                    If Tableau1(i, 2) = Tableau2(j, 1) Then
                        If Tableau2(j, 5) = "" Then
                            If Tableau2(j, 6) <> "" Then
                                Tableau3(i, 1) = "C"
                            End If
                        End If
                    End If
                Next j
            Next i
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Pour commencer, fait attention à mettre des majuscules et de la ponctuation. Ça augmente grandement la compréhension (suite du commentaire par MP).

    Question très importante pour la suite :
    Elle se produit sur quelle ligne, l'erreur ? et quel en est le message ?

    Et ensuite, juste pour commenter :

    Je ne crois pas qu'il soit nécessaire de copier les données dans des tableaux puisque les feuilles de calcul d'Excel sont en soi des tableaux. Tu peux accéder à leurs données en comparant directement le contenu des cellules grâce aux objets Cells(row, col) et Range. Par exemple tes variables i et j peuvent représenter les rang et les colonnes des objets Cells... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim i As Long, j As Integer
    Dim lastI As Long, lastJ As Integer
    ' trouver le dernier indice des rangs (lastI) et des colonnes  (lastJ)
    ' avec la méthode End pour ensuite...
    For i = 2 to lastI
        For j = 1 to lastJ
            ' ton code
        Next j
    Next i
    Tu utilisera moins de mémoire... Mais bon. Si tu es plus à l'aide avec les tableaux.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 211
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Dsl pour la ponctuation et tt le reste mais c'est que je devais m'en aller et j'ai écrire mon message SOS à la dernière minute.

    Pour le code: En fait, il me met aucune erreur, le seul soucis c'est que ça fonctionne pas comme je veux, il me met des "C" n'importe ou, on dirait qu'il se rend pas compte de la condiction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     If Tableau2(j, 6) <> "" Then
         Tableau3(i, 1) = "C"
    End If
    C'est comme si je parcours pas le bon tableau

    merci pour votre réponse c'est vraiment urgent

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 211
    Points : 76
    Points
    76
    Par défaut
    re;
    ouff enfin j'ai trouvé la solution

    Au lieu de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                            If Tableau2(j, 5) <> 0 Then
                                Tableau3(k, 1) = "C"
                            End If
    fallait juste mettre la valeur de Tableau2(j,5) c'est à dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                            If Val(Tableau2(j, 5)) <> 0 Then
                                Tableau3(k, 1) = "C"
                            End If
    Voila

    Une autre question: Pour demander à ce qu'on compare que 3 chiffres d'un nombre dans un tableau comment on fait?? Je sais que si on travaille directement sur le classeur Excel comme Monsieur zazaraignée m'a suggéré de faire il suffit juste de mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dim c as Range
    dim num as Integer
     
    'un peu plu loin
    left(c,3)  = num
     
    '...
    Mais je sais pas comment pourrais-je le faire dans un tableau créé en mémoire

    Merci d'avance

Discussions similaires

  1. Problème avec un code pour remplir une feuille de calcul
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/03/2011, 22h17
  2. Réponses: 3
    Dernier message: 05/02/2010, 16h09
  3. problème sur un code pour supprimer un fichier
    Par Bricoltou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/02/2010, 19h17
  4. Réponses: 21
    Dernier message: 10/08/2009, 15h52
  5. Problème pour lire un fichier EXCEL
    Par baloo81 dans le forum Modules
    Réponses: 12
    Dernier message: 17/07/2008, 15h21

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