Recopier ligne d'un tableau de saisie en fonction de critères

Bonjour,

Je souhaite reporter toutes mes lignes budgétaires de la feuille dépenses dans les tableaux correspondant. Tout part de la ligne Budget mais il faudrait reporter toutes les lignes à la suite.

J'ai testé recherchev et index/equiv mais je bloque quelque part et ne trouve pas.

En espérant que le tableau soit compréhensible.

Merci

9test-2019.xlsx (408.93 Ko)

Bonjour Fleur, bonjour le forum,

Que faire des lignes dispatchées après ?

  • Les Supprimer de l'onglet DEPENSES ?
  • Les Garder ? Il faudra alors les différencier sinon elles seront re dispatchées au prochain lancement de la macro.

Bonjour,

il faut les garder du tableau dépenses.

Merci

Re,

Attention ! j'ai renommé l'onglet " SE" par "SE" (un espace avant en trop). Puis, dans cet onglet, j'ai supprimé les cellules dans les colonne A à H. À vérifier donc...

le code :

Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set OS = Worksheets("DEPENSES") 'définit l'onglet source OS
DL = OS.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OS
For I = 6 To DL 'boucle des lignes 6 à DL
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set OD = Worksheets(OS.Cells(I, "A").Value) 'définit l'onglet de destination OD (génère une erreur si cet onglet n'existe pas)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'supprime l'erreur
        MsgBox "L'onglet " & OS.Cells(I, "A").Value & " n'existe pas !" 'message
        OS.Activate 'active l'onglet source
        OS.Cells(I, "A").Select 'sélectionne la cellule qui pose problème
        Exit Sub 'sort de la procédure
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    If OS.Cells(I, "A").Font.Bold = False Then 'condition : si la cellule de la boucle en colonne A n'est pas en gras
        OS.Cells(I, "A").Font.Bold = True 'met du gras dans la cellule (pour éviter qu'elle soit prise en compte lors du prochain lancement de la macro)
        Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
        OS.Cells(I, "A").Resize(1, 8).Copy DEST 'cipie les 8 premieres colonne de la cellule de la boucle et les colle dans dest
    End If 'fin de la contition
Next I 'prochaine cellule de la boucle
End Sub

Ça risque d'être un peu long quand le tableau de l'onglet DEPENSES va devenir conséquent...

Bonjour,

Merci.

Petite question je copie dans un module général ?

il faut fermer puis réouvrir ?

Peux-tu up ta version du classeur ?

ça ne bouge pas de mon côté donc il y a quelque chose que je n'ai pas bien fait.

rien à voir mais j'adore ta phrase de signature ^^

Re,

Le fichier en pièce jointe avec un bouton...

5fleur-ep-v01.xlsm (427.44 Ko)

C'est trop biennnnnnnnnn

Merci.

Il faut que je l'adapte à tous mes onglets maintenant et le faire démarrer à la ligne 6 des tableaux.

Je reviendrai peut-être vers toi si cela ne dérange pas car je ne maitrise pas le vba. (je suis en train de m'auto-former avec des tutos mais faut prendre le temps!)

A bientôt

Rechercher des sujets similaires à "recopier ligne tableau saisie fonction criteres"