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 copier-coller conditionnel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Assisitant administratif PME
    Inscrit en
    Juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assisitant administratif PME

    Informations forums :
    Inscription : Juin 2017
    Messages : 3
    Par défaut Problème copier-coller conditionnel
    Bonjour,
    c’est mon premier message dans ce forum.
    J’ai déjà fait 2, 3 macros mais on peut dire que je suis un grand débutant et je vais essayer d'être le plus clair possible.
    Depuis un logiciel de gestion j'extrais un tableau avec mes factures clients et fournisseurs pour l'année en cours.
    L'idée est de créer un onglet par mois avec deux tableaux, un avec les encaissements et l'autre avec les décaissements et ensuite d'y ajouter des formules de calculs divers.

    J'en suis à la première étape, à savoir extraire les donner et les coller dans l'onglet du mois correspondant

    Ci-dessous le code que j'ai fait pour janvier, un double "If" avec 2 conditions
    - la date est-elle en janvier ?
    - Si oui, si la valeur de la facture est positive, coller la ligne dans l'onglet encaissements JAN,
    - sinon, coller la ligne dans l'onglet décaissements JAN_C

    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
     
    Dim Lig     As Long
      Dim Col     As String
      Dim ColG     As String
      Dim NbrLig  As Long
      Dim NumLig  As Long
     
     
      Col = "D"                 ' colonne de la donnée à tester
      ColG = "G"
      NumLig = 0
      With Sheets("Général")     ' feuille source
      NbrLig = .Cells(65536, Col).End(xlUp).Row
      For Lig = 1 To NbrLig
     
        If .Cells(Lig, Col).Value Like "*/01/*" Then
          If .Cells(Lig, ColG).Value > 0 Then
          Sheets("JAN").Activate ' feuille de destination
          .Cells(Lig, Col).EntireRow.Copy
          NumLig = NumLig + 1
          Cells(NumLig, 1).Select
          ActiveSheet.Paste
          Else
          Sheets("JAN_C").Activate ' feuille de destination
          .Cells(Lig, Col).EntireRow.Copy
          NumLig = NumLig + 1
          Cells(NumLig, 1).Select
          ActiveSheet.Paste
          End If
        End If
    Le code fonctionne.
    J'aimerais passer à l'étape suivante, à savoir faire la même chose mais dans un seul onglet avec à gauche les encaissements et à droite les décaissements.

    - la date est-elle en janvier ?
    - Si oui, si la valeur de la facture est positive, coller la ligne dans l'onglet JAN dans le tableau de gauche
    - sinon, coller la ligne dans l'onglet JAN dans le tableau de droite

    Il ne faut plus que je copie la ligne entière mais juste la partie qui m'intéresse (le tableau va des colonnes A à J)
    Donc il faut que je modifie la ligne Cells(Lig, Col).EntireRow.Copy mais je n'ai pas réussi à faire quelque chose qui marche
    Et pour coller le tableau des décaissements à droite, j'imagine qu'il faut jouer sur cette ligne de code mais idem pas encore réussi
    Cells(NumLig, 1).Select
    ActiveSheet.Paste


    Merci d'avance pour votre aide !!!
    Et puis si vous avez des critiques sur le code existant je prends aussi !
    Bonne journée à tous/tes

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour,
    tu as une colonne réservée à la date alors :
    Ajouter une colonne pour le mois avec la formule standard de Excel
    exemple si la date en colonne A tu fais avec la formule suivante :
    =SI(A1<>"";MOIS.DECALER(A1;0);"")
    Même chose pour le type du mouvement : ajouter une colonne pour encaissement ou décaissement avec la formule standard de Excel
    =SI(C2<>"";SI(C2>0;"Encaissement";"décaissement"))
    Puis tu feras ton code VBA
    BONNE CONTINUATION

  3. #3
    Candidat au Club
    Homme Profil pro
    Assisitant administratif PME
    Inscrit en
    Juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assisitant administratif PME

    Informations forums :
    Inscription : Juin 2017
    Messages : 3
    Par défaut
    Merci je vais tenter ça !


    Citation Envoyé par BENNASR Voir le message
    Bonjour,
    tu as une colonne réservée à la date alors :
    Ajouter une colonne pour le mois avec la formule standard de Excel
    exemple si la date en colonne A tu fais avec la formule suivante :
    Même chose pour le type du mouvement : ajouter une colonne pour encaissement ou décaissement avec la formule standard de Excel
    Puis tu feras ton code VBA
    BONNE CONTINUATION

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 557
    Par défaut
    Bonjour

    Pour répondre à tes questions :
    remplacer EntireRow par l'adresse des cellules comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .range(Cells(Lig, 1),cells(Lig,10))
    si les données sont en colonne 1 à 10 (A à J)

    Eviter les select : donner la destination de la copie avec une ligne du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Sheet1").Range("A1:D4").Copy destination:=Worksheets("Sheet2").Range("E5")
    dont en ayant 1 comme 1ere colonne pour les encaissements et 12 pour les décaissements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .range(Cells(Lig, 1),cells(Lig,10). copy destination:=Cells(NumLig, 12)
    Néanmoins pourquoi ne pas partir de ton export, ajouter une colonne type de mouvement comme indiqué par BENNASR et synthétiser cela par des tableaux croisés dynamiques qui peuvent automatiquement ventiler par mois, calculer les écarts, pourcentages... de façon simple et souple... sans VBA...

    Edit : ventiler les données sur des onglets différents selon le mois interdit ou complique la possibilité de comparer les mois notamment

  5. #5
    Candidat au Club
    Homme Profil pro
    Assisitant administratif PME
    Inscrit en
    Juin 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assisitant administratif PME

    Informations forums :
    Inscription : Juin 2017
    Messages : 3
    Par défaut
    Merci pour ta réponse,
    effectivement je me complique peut-être la vie
    je vais essayer par tableau croisé dynamique également
    Je vous tiens au courant de mes avancées
    Merci à tous !

Discussions similaires

  1. Problème copier/coller dans text
    Par cocktailonthebeach dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 24/01/2009, 21h04
  2. [DW8] Problème copier/coller désactivé
    Par tramber dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 26/08/2008, 12h39
  3. [CKEditor] Problème copier coller
    Par amestoche dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 28/05/2007, 14h04
  4. [VBA-E]Problème Copier-Coller entre 2 classeurs
    Par Corlo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/05/2007, 14h31
  5. Réponses: 1
    Dernier message: 06/07/2006, 19h20

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