Problème macro insérer feuille

Allergique

XLDnaute Junior
bonjour,

J'ai un problème de macro avec l'enregistrement excel. Je vous explique ce qui ne marche pas:

J'ai un tableau avec des tas d'informations. Je souhaite créer en automatique une nouvelle feuille, et y copier certaines cellules.

Par exemple, mon tableau d'origine se nomme Feuil1. Lorsque la macro insère une nouvelle feuille, celle-ci est nommée Feuil2.
Si je souhaite exécuter la macro une seconde fois pour un nouveau tableau, c'est la feuille 2 qui sera écrasée car c'est le numéro de feuille qui fait référence lorsque la macro a été crée. La nouvelle page crée reste donc vierge

Est-ce possible de faire la chose suivante:

-Que la macro prenne comme page source la feuille active (qui peut être la feuille 1, 2 ou autre)et qu'elle la garde en mémoire pour revenir copier les cellules
-Que lorsque la macro insère une nouvelle feuille qu'elle prenne en mémoire le nom de la nouvelle feuille (qui peut être la 5, 6 ou 7ème feuille insérée)

Voilà, j'espère avoir été clair dans mes explications

merci pour votre aide
 

dg62

XLDnaute Barbatruc
Re : Problème macro insérer feuille

Bonjour Allergique


Si j'ai bien compris voilà une premiere approche du problème.


Code:
Sub Macro1()
    nomfeuilleini=ActiveSheet.Name    
    Sheets.Add
    Nouvfeuille = ActiveSheet.Name
 
    Sheets(nomfeuilleini).Select
    Range("A1:B13").Select ' à adapter
    Selection.Copy
    Sheets(Nouvfeuille).Select
    ActiveSheet.Paste
End Sub
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Problème macro insérer feuille

bonjour allergique,Dg
une autre solution
Sub Macro1()
Dim FeuilSource As Worksheet, FeuilDest As Worksheet
Set FeuilSource = ActiveSheet 'ou sheets("nomfeuille")
Set FeuilDest = Sheets.Add
FeuilSource.Range("A1:D6").Copy ' à adapter
FeuilDest.Paste
FeuilDest.Name = "cqfd"
'tu peux auusi écrire comme suit
FeuilDest.Range("A1:D6").Value = FeuilSource.Range("A1:D6").Value

End Sub
 

Kobaya

XLDnaute Occasionnel
Re : Problème macro insérer feuille

salut Bebere, dg62 et Allergique,

dans la sub de bebere, ne pas oublier à la fin :
Set FeuilSource = Nothing
Set FeuilDest = Nothing

pour libérer la place mémoire allouée aux variables objet. :p
 

Allergique

XLDnaute Junior
Re : Problème macro insérer feuille

Bonjour,

J'aurai besoin de votre aide svp pour programmer la macro de mon tableau.

J'ai à l'origine des tableaux de plus de 1000 lignes, donc la programmation conciste à copier/coller des cellules bien précises dans une nouvelle feuille.
les critères sont par comparaison de cellules identiques et de cellule de certaines couleur, ce qui est trop compliqué pour moi malgré la recherche sur le forum

je vous joins le lien vers le fichier excel (qui est la suite de celui de ce topic):

http://allergique5.site.voila.fr/macro.zip

J'ai mis toutes les explications et un onglet résultat attendu pour être plus parlant.le raccourci macro est Ctrl-e
Le tableau est loin d'être sous sa forme définitive mais c'est surtout pour connaître les codes à utiliser et pour essayer de continuer la suite

Merci d'avance
 

dg62

XLDnaute Barbatruc
Re : Problème macro insérer feuille

Bonjour Allergique


Une premiere ébauche à compléter.
Le code est simple et documenté

Allergique, pourrais tu me confirmer que l'on a tjs la même structure de tableau ?

cad : cellule verte...autre cellule verte même ref...cellule violette même ref...cellule verte autre ref.....



Code:
Option Explicit
Sub allergique()

Dim c As Range
Dim lig As Integer
Dim iter As Boolean
Dim ligne As Integer
Dim wsource As Worksheet
Dim Wdest As Worksheet
Dim ref As String
Dim ref2 As String
ligne = 7
Set wsource = ThisWorkbook.Worksheets("donnees")
Set Wdest = ThisWorkbook.Worksheets("result")
iter = False


For Each c In Range("k6:k40") 'on boucle sur chaque cellule de la colonne
    
    ' premiere ligne verte
    If c.Interior.ColorIndex = 35 And iter = False Then 'ligne verte
        lig = c.Row 'numero de la ligne
        iter = True ' Flag pour savoir si on est sur une premiere ligne verte
        
        Wdest.Range("A" & ligne) = wsource.Range("B" & lig).Value
        Wdest.Range("B" & ligne) = wsource.Range("C" & lig).Value
        Wdest.Range("C" & ligne) = wsource.Range("D" & lig).Value
        
        Wdest.Range("H" & ligne) = wsource.Range("J" & lig).Value
        Wdest.Range("I" & ligne) = wsource.Range("K" & lig).Value
        
        Wdest.Range("D" & ligne) = wsource.Range("H" & lig).Value
        Wdest.Range("G" & ligne) = wsource.Range("I" & lig).Value
        
        ref = Range("B" & lig) & Range("C" & lig)
        
    End If
    
    ' traitement ligne verte suivante
    If c.Interior.ColorIndex = 35 And iter = True Then  'ligne verte
        lig = c.Row 'numero de la ligne
        ligne = ligne + 1
        ' mettre ici traitement  ligne verte
        ref2 = Range("B" & lig) & Range("C" & lig)
            If ref = ref2 Then
                Wdest.Range("A" & ligne) = wsource.Range("B" & lig).Value
                Wdest.Range("B" & ligne) = wsource.Range("C" & lig).Value
                Wdest.Range("C" & ligne) = wsource.Range("D" & lig).Value
        
                Wdest.Range("H" & ligne) = wsource.Range("J" & lig).Value
                Wdest.Range("I" & ligne) = wsource.Range("K" & lig).Value
        
                Wdest.Range("D" & ligne) = wsource.Range("H" & lig).Value
                Wdest.Range("G" & ligne) = wsource.Range("I" & lig).Value
        
            Else
                iter = False
            End If
    Else
        Iter = False   
        
    End If
    
    
    
    

    If c.Interior.ColorIndex = 39 Then  'ligne violette
        lig = c.Row ' numéro de la ligne
    
        ' traitement ligne violette
    
    End If

Next c


Set wsource = Nothing
Set Wdest = Nothing

End Sub
 
Dernière édition:

Allergique

XLDnaute Junior
Re : Problème macro insérer feuille

Bonjour,

Merci pour cette première ébauche

Oui, je conserverai la même trame de tableau. Les cellules références seront toutes colonne K, et celles-ci garderont le même code couleur vert et violet.

je ne pourrai pas modifier aujourd'hui cette macro. J'essayerai de continuer demain et je te tiendrai au courant de ce qu'il en est.

Merci

à+
 

dg62

XLDnaute Barbatruc
Re : Problème macro insérer feuille

re

j'ai renommé les feuilles result et donnees

j'ai travaillé sur ton problème, j'ai un petit problème à régler mais là il fait beaucoup trop chaud.

Je vais reprendre demain matin.

Bonne soirée
 

dg62

XLDnaute Barbatruc
Re : Problème macro insérer feuille

Bonjour Allergique
Bonjour le forum


une solution avec un code qui est à épurer et optimiser.

un bouton sur la feuille données permet de lancer la macro.

les noms des feuilles seront à adapter dans la macro.
 

Pièces jointes

  • allergique.zip
    44.4 KB · Affichages: 67

Allergique

XLDnaute Junior
Re : Problème macro insérer feuille

Bonjour,

J'ai créé une macro qui à un certain moment ajoute un bouton de commande.

Lorsque je clique je souhaite attribuer la fonction Range("BB3").Select

Comment programmer en automatique la macro pour qu'après la création du bouton elle lui attribue ce code?

Merci
 

Allergique

XLDnaute Junior
Re : Problème macro insérer feuille

Re,

excuse moi si je pose une question bête, mais comment fait-on pour créer la procédure préalablement à la création du bouton?

Aussi, j'ai pris ton exemple pour l'adapter à mon tableau, et je ne sais pas pourquoi il ne met aucun message d'erreur mais ne copie pas non plus les cellules demandées.
je me perd dans les déclaration AciveSheet, WorkSheet etc...


Pour mieux comprendre l'exemple que tu m'as créé, peux-tu me dire quelle est la fonction de "iter", "flag", "ind" et le débug.print?

j'ai un livre vba, mais malgré ça je n'y cale pas grand chose...

je laisse le lien du nouveau fichier:
http://allergique5.site.voila.fr/macro.zip

à+
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 326
Membres
102 862
dernier inscrit
Emma35400