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 :

Livre de compte vers base de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 16
    Par défaut Livre de compte vers base de données
    Bonjour,

    Je suis débutant en VBA et je viens vous voir quand je dois copier un livre de compte vers une base de donnée, j'ai réussi à le faire avec plusieurs macro mais c'est pas vraiment optimisé, je voulais savoir si c'était possible de toute faire en une maccro.
    Images attachées Images attachées   

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Peut-être pourrais-tu présenter ici ton code, de préférence entre balises CODE.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Cj()
     
        Selection.Copy
        Sheets("transform? en BDD").Select
        Range("F" & Rows.Count).End(xlUp).Select
        ActiveSheet.Paste
    End Sub

    J'ai mis une des macro sachant qu'elles sont identiques, seule la lettre de la colonne change. Donc en gros je copie la sélection puis je la colle en dernière ligne de la deuxième feuille. Enfaite le problème c'est la disposition du livre de compte qui m'empêche de par exemple prendre toutes les dates d'un coup.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Selection.Copy, ça ne va pas vraiment être reproductible.
    Il faudrait que tu indiques ce que tu veux copier et où tu veux le copier.

    Pour info, ton code simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Cj()
         Selection.Copy Sheets("transform? en BDD").Range("F" & Rows.Count).End(xlUp).PasteSpecial(xlPasteAll)
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 16
    Par défaut
    Donc j'y ai passé la journée et j'ai un code beaucoup plus complet, mais j'ai un soucis de boucle qui boucle à l'infinie, donc c'est une boucle each et j'aimerai aller de la colonne A à R sur la ligne d ( qui est une variable) je vois pas ce qui cloche dans mon code je vous le poste ici.

    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
    Sub opti()
    Dim i As Long
    Dim e As Long
    Dim c As Object
    Dim d As Long
    Dim Ad As String
    Dim Rd As String
    Dim CodeAna As String
    Dim NoCompte As String
    With Workbooks
     
    For i = 1 To Rows.Count
        If estCode(Range("A" & i).Value) = True And IsEmpty(Range("A" & i)) = False Then
            CodeAna = ("A" & i)
            For e = i + 1 To Rows.Count
                If estCode(Range("A" & e).Value) = False And Range("A" & e).Font.Bold = True Then
                    NoCompte = ("A" & e)
                    For d = e + 1 To Rows.Count
                    If IsEmpty(Range("A" & d)) = True Then
                        Exit For
                    Else
                        Sheets("transform? en BDD").Range("A" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range(CodeAna).Value
                                    Sheets("transform? en BDD").Range("C" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range(NoCompte).Value
                                    Ad = ("A" & d)
                                    Rd = ("R" & d)
                        For Each c In Range("Ad:Rd")
                            Select Case c
                                                Case Is = Range("A" & d): Sheets("transform? en BDD").Range("E" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range("A" & d).Value
                                                Case Is = Range("B" & d): Sheets("transform? en BDD").Range("F" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range("B" & d).Value
                                                Case Is = Range("C" & d): Sheets("transform? en BDD").Range("G" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range("C" & d).Value
                                                Case Is = Range("E" & d): Sheets("transform? en BDD").Range("H" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range("E" & d).Value
                                                Case Is = Range("K" & d): Sheets("transform? en BDD").Range("I" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range("K" & d).Value
                                                Case Is = Range("M" & d): Sheets("transform? en BDD").Range("J" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range("M" & d).Value
                                                Case Is = Range("O" & d): Sheets("transform? en BDD").Range("K" & Rows.Count).End(xlUp).Value = Sheets("Grand-livre analytique").Range("O" & d).Value
     
     
                            End Select
                        Next
                    End If
                    Next
                ElseIf estCode(Range("A" & i).Value) = True Then
                    Exit For
                Else
     
                End If
            Next
     
        End If
     
    Next
    End With
    End Sub

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Lubberla Voir le message
    j'ai un soucis de boucle qui boucle à l'infinie, donc c'est une boucle each et j'aimerai aller de la colonne A à R sur la ligne d ( qui est une variable) je vois pas ce qui cloche dans mon code je vous le poste ici.
    Deux remarques liminaires :
    A ma connaissance, il n'est pas possible de faire une boucle infinie avec un For Each.
    La ligne d ça n'existe pas, les ligne sont des valeurs numériques.

    Cependant, je comprends ce que tu veux dire : il s'agit du numéro de ligne contenue dans la variable d.
    Mais ça remarque explique ton erreur.
    En fait, ta boucle For Each boucle sur toutes les cellules des colonnes AD à RD, ce qui représente environ 450 millions de cellules, ce qui ressemble certainement beaucoup à l'infini.

    Essaye de modifier ton code ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                        For Each c In Range("A" & d & ":R" & d)

Discussions similaires

  1. [SSIS][2k5] Import depuis XML vers Base de donnée
    Par Sinclair dans le forum SSIS
    Réponses: 4
    Dernier message: 24/01/2008, 11h25
  2. Données Excel vers Base de données
    Par godmich dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/11/2007, 18h23
  3. transfert DataSource vers Base de Données
    Par PadawanDuDelphi dans le forum Bases de données
    Réponses: 6
    Dernier message: 12/09/2006, 11h22
  4. Importation CSV vers base de données
    Par Brice Yao dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/06/2005, 13h42
  5. Livre gratuit sur les bases de données...
    Par benby dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 26/05/2005, 12h24

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