Remplir feuilles de calcul à partir d'un import

Bonjour à tous,

Je viens vers vous pour vous demander de l'aide... mes connaissances en VBA sont très limitées et je pense en avoir besoin pour le problème que je rencontre. D'autres sujets de ce type ont été abordé mais sont beaucoup trop complexe pour mon niveau ...

Mon problème est le suivant :

J'aimerai automatiser la transposition de données de la première feuille (IMPORT) dans les autres feuilles en fonction du nom inscrit dans la deuxième colonne.

Quand une cellule commence par "Dupond" (colonne "Nom"), je souhaiterai mettre toute la ligne dans la feuille "Dupond" (de même pour Jacques).

Je prends n'importe quelle solution (pas trop complexe si possible ).

Merci pour votre aide et bonne journée.

19import-vba.xlsx (9.34 Ko)

Bonjour Glloq, bonjour le forum,

Le code ci-dessous devrait convenir. Il ajoute un onglet si celui-ci n'existe pas.

Sub Macro1()
Dim I As Worksheet 'déclare la variable I (onglet IMPORT)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim NC As Byte 'déclare la variable NC (Nombre de Colonnes)
Dim X As Integer 'déclare la variable X (incrément)
Dim O As Worksheet 'déclare la variable O (Onglet)

Set I = Sheets("Import") 'définit l'onglet I
TC = I.Range("A1").CurrentRegion 'definit le tableau de cellules TC
NL = UBound(TC, 1) 'définit le nombre de lignes NL du tableau de cellules TC
NC = UBound(TC, 2) 'définit le nombre de colonnes NC du tableau de cellules TC
For X = 2 To NL 'boucle sur toutes les lignes X du tableau de cellules TC (en partant de la seconde)
    On Error Resume Next 'getion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set O = Sheets(Split(TC(X, 2), " - ")(0)) 'définit l'onglet O (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
        Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position
        ActiveSheet.Name = Split(TC(X, 2), " - ")(0) 'nomme l'onglet
        ActiveSheet.Range("A1").Resize(1, NC).Value = Application.Index(TC, 1) 'récupère les étiquettes de la première ligne de TC
        Set O = ActiveSheet 'définit l'onglet O
    End If 'fin de la condition
    Set DEST = O.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
    DEST.Resize(1, NC).Value = Application.Index(TC, X) 'renvoie dans DEST redimensionnée la ligne X de TC
Next X 'prochaine ligne de la boucle
End Sub

Bonjour ThauThème et merci pour ta réponse si rapide !

Je ne comprends pas (encore) tout mais ça fonctionne !

Encore merci !

Re,

J'ai mis beaucoup de temps moi aussi avant d'assimiler les variables de tableaux de cellules. Ça me paraissait complexe et obscur. Mais ça ne l'est pas pour peu que l'on lise un peu dessus et surtout, c'est tellement plus rapide que de travailler directement dans les cellules...

Justement, en parlant de cellule ....

Je reviens vers vous car j'aimerai optimiser le code VBA pour simplement rajouter une formule dans une cellule.

Une fois que la ligne a été copié dans le nouvel onglet, est-il possible, en VBA, d'ajouter une formule dans la cellule juste après la ligne ? (formule assez longue avec lien vers les différents onglets)

Re,

Je suis assez nul en formule mais tant que tu ne l'auras pas montrée, je ne pourrais pas te répondre... Sinon avec VBA on peut pratiquement tout faire, sauf le café... Mais il suffit que je te dise ça pour qu'un fou furieux rapplique avec un code qui le fait...

Re bonjour le forum,

Après ces quelques jours de vacances, il faut bien retourner au boulot !

Concernant la formule, la voici :

=SI(NB.SI(AX_1!$D$1:$D$150;$A2);"Enlevé le";SI(NB.SI(AX_2!$L$1:$L$150;$A2);"Enlevé le";"En attente"))

pour info, j'ai à la base 3 feuilles, que j'ai récupéré via un import, nommées 'IMPORT' , 'AX_1' et 'AX_2'.

La formule me permet de voir si un client a été livré, si le numéro est présent sur les feuilles AX_1 ou AX_2, le client a été livré. (et par la suite, via une autre formule, je récupère la date.

Si c'es possible de pouvoir rajouter cette formule à la suite de chaque ligne, ça serait top !

Merci encore pour votre aide.

Rechercher des sujets similaires à "remplir feuilles calcul partir import"