Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier certaines colonnes dans un autre onglet

  • Initiateur de la discussion Initiateur de la discussion ffttkl
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

ffttkl

Guest
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

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

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 😱 .
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

Dernière édition:
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...
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
884
X
Réponses
31
Affichages
4 K
Xplorer
X
A
Réponses
1
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…