Copier certaines colonnes dans un autre onglet

ffttkl

XLDnaute Nouveau
bonjour,

J'ai un document excel avec dans le premier onglet (ECRIT) toutes les écritures comptables que l'on récupere d'un autre logiciel
Grace à une macro, je souhaterai copier les colonne C,E, F,G,H dans un autre ongles,et ceci à cahque changement de code de la colonne A de l'onglet crit.

Etant nvice en vba, qui peut m'aider. J'ai mis le fichier exempje en pièce jointe.

Merci à ceux qui veulent bien m'aider.

Karine
 

Pièces jointes

  • Gestion_activite_analytique.xls
    46.5 KB · Affichages: 108

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier certaines colonnes dans un autre onglet

Bonsoir Consonnes, bonsoir le forum,

En pièce jointe ton fichier avec une macro événementielle Change. Elle agit à l'édition d'une valeur dans la colonne G ou la colonne H. Macro commentée pour plus de compréhension :

Code:
Private test As Boolean 'décalre la variable test
 
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim sour As Range 'déclare la variable sour (SOURce)
Dim oc As Worksheet 'déclare la variaboe oc (Onglet Cible)
Dim dest As Range 'décalre la variable dest (DESTination)
 
If test = True Then Exit Sub 'si la variable test est vraie, sort de la procédure
 
If Target.Column = 7 Or Target.Column = 8 Then 'condition 1 : si le changement a lieu dans la colonne 7 ou la colonne 8
    test = True 'définit la variable test
    Set sour = Cells(Target.Row, 1) 'définit la variable sour
    On Error Resume Next 'si une erreur est générée passe à la ligne suivante (gestion des erreurs si onglet inexistant)
    Set oc = Sheets(sour.Value) 'définit l'Onglet Cible
    If Err > 0 Then 'condition 2 : si une erreur a été générée
        MsgBox "Donnée Erronée !" 'message
        Target.ClearContents 'efface la somme (débit ou crédit)
        Cells(Target.Row, 1).Select 'sélectionne la cellule de la colonne A
        test = False 'redéfinit la variable test
        Exit Sub 'sort de la procédure
    End If 'fin de la condition 2
 
    Set dest = oc.Range("A65536").End(xlUp).Offset(1, 0) 'définit la variable dest
    sour.Offset(0, 2).Copy dest 'copie la date
    sour.Offset(0, 4).Copy dest.Offset(0, 1) 'copie le numéro de pièce
    sour.Offset(0, 5).Copy dest.Offset(0, 2) 'copie le libéllé écriture
    sour.Offset(0, 6).Copy dest.Offset(0, 3) 'copie le débit
    sour.Offset(0, 7).Copy dest.Offset(0, 4) 'copie le crédit
End If 'fin de la condition 1
test = False 'redéfinit la variable test
End Sub
 

Pièces jointes

  • Consonnes_v01.xls
    57 KB · Affichages: 139

Efgé

XLDnaute Barbatruc
Re : Copier certaines colonnes dans un autre onglet

Bonjour ffttkl, Robert,
Une autre version par macro à lancer par un bouton.
Robert, pas compris la même chose :eek: .
Code:
Sub tri()
Set FE = Sheets("ECRI")
Set FG1 = Sheets("EGA1")
Set FG2 = Sheets("EGA2")
Derligne = FE.Range("A" & Application.Rows.Count).End(xlUp).Row
For i = 1 To Derligne
    If FE.Cells(i, 1).Value = "EGA1" Then
        Derligne2 = FG1.Range("A" & Application.Rows.Count).End(xlUp).Row + 1
        With FG1
            .Cells(Derligne2, 1).Value = FE.Cells(i, 3).Value
            .Cells(Derligne2, 2).Value = FE.Cells(i, 5).Value
            .Cells(Derligne2, 3).Value = FE.Cells(i, 6).Value
            .Cells(Derligne2, 4).Value = FE.Cells(i, 8).Value
            .Cells(Derligne2, 5).Value = FE.Cells(i, 7).Value
        End With
    End If
    If FE.Cells(i, 1).Value = "EGA2" Then
        Derligne3 = FG2.Range("A" & Application.Rows.Count).End(xlUp).Row + 1
        With FG2
            .Cells(Derligne3, 1).Value = FE.Cells(i, 3).Value
            .Cells(Derligne3, 2).Value = FE.Cells(i, 5).Value
            .Cells(Derligne3, 3).Value = FE.Cells(i, 6).Value
            .Cells(Derligne3, 4).Value = FE.Cells(i, 8).Value
        .Cells(Derligne3, 5).Value = FE.Cells(i, 7).Value
        End With
    End If
Next
MsgBox "Traitement terminé"
End Sub
Cordialement

EDIT Pas besoin de redéfinir "For i = 1 To ...." Optimisation
 

Pièces jointes

  • Gestion_activite_analytique(3).zip
    14.5 KB · Affichages: 71
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier certaines colonnes dans un autre onglet

Bonsoir le fil, bonsoir le forum,

Si je crois que nous avons compris la même chose Efgé. Nos macros sont sensiblement identiques sauf que la mienne est automatique et se fait à chaque nouvelle ligne, tandis que la tienne agit sur toutes les lignes au clic sur le bouton.
L'inconvénient de la mienne est que si le fichier de Consonnes contient déjà plein de lignes non dispatchées il va devoir retaper toutes les valeurs en G ou H pour le faire. L'inconvénient de la tienne c’est que si il lance le bouton aujourd'hui et rajoute 30 ligne demain il aura un paquet de doublons en recliquant sur le bouton...

Sinon son exemple n'est pas cohérents... Il a reporté dans EGA1 les données de la colonne G comme des Crédits (et celles de la colonne H en Débits) alors que dans l'onglet EGA2 il a inversé ??? J'ai considéré que respecter l'ordre des colonnes devrait être le plus logique. Il n'y a que lui qui peut le dire...
 

Efgé

XLDnaute Barbatruc
Re : Copier certaines colonnes dans un autre onglet

Bonjour à tous,
Entièrement d'accord avec toi Robert :
L'inconvénient de la tienne c’est que si il lance le bouton aujourd'hui et rajoute 30 ligne demain il aura un paquet de doublons en recliquant sur le bouton...


Donc, une modif pour purger les feuilles avant importation.
Cordialement
 

Pièces jointes

  • Gestion_activite_analytique(4).zip
    14.6 KB · Affichages: 116

Discussions similaires

Réponses
9
Affichages
115

Statistiques des forums

Discussions
312 801
Messages
2 092 245
Membres
105 313
dernier inscrit
tissouma