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

XL 2016 Boucle pour ajouter des colonnes à un onglet

Pauliakov

XLDnaute Nouveau
Bonjour à tous,

Je suis encore novice en VBA mais je commence à vraiment m'y mettre car c'est très utile et très prenant !

Je suis actuellement en train de créer un fichier pour mon travail qui servira à la Supply Chain.
Mon fichier est alimenté par un fichier SQL mis à jour dans l'onglet SQL
Je souhaite réaliser une "Fiche_Fournisseur" qui correspond à un onglet
Donc un onglet = 1 fournisseur

La trame de chaque onglet est identique et l'originale se nomme "Modèle"
Dans le fichier SQL, le nom du fournisseur est construit comme ça
Exemple : Fournisseur "DUPONT" dans mon SQL c'est 9DUPONT0000000"

Mais je bloque complètement (manquant d'éléments) afin d'automatiser la macro de la création des onglets.

Pour résumé, je souhaite que pour chaque ligne contenant dans la colonne 3 le nom d'un fournisseur, la macro crée un onglet au nom du fournisseur, ajouter son nom en G2 (juste le nom est non le numéro avec le 9 et les 0 si possible) et ajoute les colonnes en rouge de l'onglet SQL dans chaque fiche. J'ai indiqué dans quelle colonne doit aller la colonne en dessous.
De plus, il faut un filtre au début de la macro sur la colonne D avec les caractères BCF car sinon j'aurais des lignes non voulu.

Evidemment les colonnes ne changent pas, mais les lignes varient.
De plus, j'ai 5 onglets qui ne doivent pas bouger. J'ai essayé de mettre If avec leur nom pour pas que ça boucle sur eux, mais ça ne fonctionne pas...

J'ai commencé comme ça

VB:
Dim Fiche_Fournisseur As Worksheet

Worksheets ("SQL").Range("A1").AutoFilter field:=4, Criteria1:=BCF

For Each Fiche_Fournisseur In Worksheets

'On met des exceptions sur les feuilles qui doivent rester intactes
If Fiche_Fournisseur = "SQL" Or Fiche_Fournisseur = "Infos" Or Fiche_Fournisseur = "Assistant" Or Fiche_Fournisseur = "Suivi_AR" Or Fiche_Fournisseur = "Modèle" Then

Else If
'Je supprime toutes les données des fiches pour faire place aux nouvelles
Sheets("Fiche_Fournisseur").Range("C4:S254").Clear
Next

Et donc le but étant de mettre ces fiches à jour si j'ai des nouveaux fournisseurs dans le SQL, d'une manière automatique car la macro crée une nouvelle fiche à chaque nouveau fournisseur et mets à jour les fiches facilement.

Je pense que ce n'est pas facile... J'ai déjà fait la macro pour délimiter la zone de travail :

VB:
Dim zone As Range
Dim DernLigne As Long, DernColonne As Integer
'dernière ligne colonne A
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
'dernière colonne ligne 1
DernColonne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column - 12
Set maPlage = Range(Cells(1, 1), Cells(DernLigne, DernColonne))
zone.Select

Mais pour la suite, je n'y arrive pas, j'ai fait des forums, j'ai lu des FAQ ou autres , mais je n'arrive pas à maîtriser tous les éléments.
Dans un soucis de confidentialité, je suis obligé de masquer toutes les données. L'onglet SQL est donc un copier coller vierge afin de voir la mise en page. J'ai remplacé le nom des fournisseurs par les lettres A, B, C etc.

Si vous avez des pistes j'en serais ravie !

Par avance, merci de votre aide !
 

Pièces jointes

  • Test.xlsm
    170.3 KB · Affichages: 36

Pauliakov

XLDnaute Nouveau
Bonjour,

Désolé j'étais malade je n'ai pas pu vous répondre avant.

Je vous remercie tout fonctionne et pour le nom du fournisseur en F2 je n'avais pas compris en fait, je vous remercie de la réponse.

C'est super !

Bonne journée à tous
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…