begin process at 2012 02 14 23:48:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

VBA

 > 

vba excel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

vba excel

mardi 18 avril 2006 à 01:52:51 | vba excel

safisa

Bonjour; Svp qui peut m'aider pour créer un macro dans un classeur excel. Ce macro va copier tous les données qui se trouve dans chaque feuille du classeur et les metres dans une seule feuille , cette feuille est comme un registre ou je resume tous les rubriques que j'ai dans les autres feuille et merci;
mardi 18 avril 2006 à 06:38:43 | Re : vba excel

mortalino

Membre Club
Salut Safisa, Je pense que le mieux pour toi serait de t'enregistrer en train de copier les données de chaque page, dans la page finale. Tu auras le code de ce que tu as fait et tu pourras le modifier suivant tes besoins. Pour des traitements simple comme ceux-là, l'enregistreur de macro s'avère etre un outil qui facilite la saisie et fait gagné du temps, restera plus qu'à supprimer les quelques propriétés inutiles ! Si tu veux le code exact, donne nous des précisions sur le nombre d'onglet et les plages de données à copier (A1:??). @ ++ Mortalino
mardi 18 avril 2006 à 13:44:10 | Re : vba excel

Polack77

Voila un code qui copie toute les données d'un fichier (touts les feuille) à toi de l'adapter.
Désol pour les fautes d'orthographe

'Fait par Waurzyczka Vincent
Sub Import()

Dim Tempon As Integer
Dim CptLigne As Long
Dim CptColone As Long
Dim CptFeuil As Integer: CptFeuil = 1
Dim PremLigne As Long
Dim PremColone As Long
Dim DerLigne As Long
Dim DerColone As Long
Dim CptLigneInsert As Long: CptLigneInsert = 1
    'Ne fait rien si l'utilisateur répond "Non"
    If MsgBox("Le programme vas vous proposer d'ouvrir un fichier." & Chr(10) & Chr(13) & "Merci de sélectionner le fichier d'où extraire les donnée." & Chr(10) & Chr(13) & Chr(10) & Chr(13) & "Attention il faut que seul le fichier contenant le programme soit ouvert." & Chr(10) & Chr(13) & "Voulez vous continuer?", vbYesNo, "Attention") = vbYes Then
        Application.Dialogs(xlDialogOpen).Show 'Ouvre la fenaitre d'ouverture de fichier
        '-------------------------
        'Gestion d'erreur : trop de fichier ouvert
        If Application.Workbooks.Count <> 2 Then
            Tempon = MsgBox("Erreur trop de fichier sont ouvert merci de fermer tout fichier Excel sauf celui contenant le programme.", vbOKOnly, "Erreur")
            Exit Sub
        End If
        '--------------------------
        Application.Workbooks(1).Activate 'Active le fichier programme
        Worksheets.Add 'Ajoute un onglet où mettre les donnée en tempon
        Worksheets(1).Select 'Selection le nouvelle onglet
       
        Application.Workbooks(2).Activate 'Selection du fichier d'où on prend les donnée (nomé "EXTRACT" a partir de maintenant)
       
        Worksheets(1).Select 'Selection du 1ér onglet de "EXTRACT"
        Do While CptFeuil <= Worksheets.Count 'Faire temps que tout les onglet n'on pas été verif
            PremLigne = 0   '\
            PremColone = 0  ' |
            DerLigne = 0    ' >Initialisation des marque
            DerColone = 0   ' |
            CptColone = 1   '/
            Worksheets(CptFeuil).Select 'Selction de la feuille suivante
            
            Do While CptColone < 257 'Pour les 256 colone (compteur STRICTEMENT inférieur à)
                CptLigne = 1 'Initialisation du compteur ligne
                Do While CptLigne < 65536 'Pour toute les ligne
                    Cells(CptLigne, CptColone).Select 'Selectione la cellule en cours
                    If ActiveCell = "" Then 'Si la cellule est vide
                        Selection.End(xlDown).Select 'Passe directement à la valeur suivante (equivalent à la comande "Ctrl" + Fléche directionelle )
                        'Le compteur ligne est egale au num ligne de la cellule celectionnée
                        CptLigne = Val(Split(Selection.Address(True, True, xlR1C1), "R")(1))
                    End If
                    If ActiveCell <> "" Then 'Si la cellule est non vide
                        If PremLigne = 0 Or PremLigne > CptLigne Then 'Si la 1ér ligne non détect ou supérieur à ligne en cours
                            PremLigne = CptLigne 'Sauv du num ligne
                        End If
                        If DerLigne < CptLigne Then 'Si num derligne est inférieur a la ligne en cours
                            DerLigne = CptLigne 'Sauv du num ligne
                        End If
                        If PremColone = 0 Then 'Si 1ér colone non détect
                            PremColone = CptColone 'Sauv du num colone
                        End If
                        If DerColone < CptColone Then 'Si num dérinere colone inférieur à la colone en cours
                            DerColone = CptColone 'Sauv du num colone
                        End If
                       
                        CptLigne = CptLigne + 1 'Passe à la ligne suivante
                    End If
                   
                Loop
               
                CptColone = CptColone + 1 'Passe à la colone suivante
            Loop
           
            If PremLigne <> 0 Then 'Si des donnée on été détect (soit les marqueur défini)
                Range(Cells(PremLigne, PremColone), Cells(DerLigne, DerColone)).Select 'Selectione tout ce qui est dans les marqueurs
            Else
                Range(Cells(1, 1), Cells(1, 1)).Select 'Selectione la 1ér cellule
            End If
            '-----------
            'Défusione les cellule de la selection
            With Selection
                .Orientation = 0
                .AddIndent = False
                .ShrinkToFit = False
                .MergeCells = False
            End With
            '-------------
            Selection.Copy 'Met dans le presse papier la selection
           
            Application.Workbooks(1).Activate 'Retourne dans le fichier programme
           
            Cells(CptLigneInsert, 1).Select 'Vas à la ligne compteur d'insersion
           
            'Colle le format des donnée en presse papier (gras, couleur de cellule, ..., pas les bodure)
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            'Colle les donnée
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
           
            '----------------------
            'Cadre autous donnée
            Selection.Borders(xlDiagonalDown).LineStyle = xlNone
            Selection.Borders(xlDiagonalUp).LineStyle = xlNone
            With Selection.Borders(xlEdgeLeft)
                .LineStyle = xlContinuous
                .Weight = xlMedium
                .ColorIndex = xlAutomatic
            End With
            With Selection.Borders(xlEdgeTop)
                .LineStyle = xlContinuous
                .Weight = xlMedium
                .ColorIndex = xlAutomatic
            End With
            With Selection.Borders(xlEdgeBottom)
                .LineStyle = xlContinuous
                .Weight = xlMedium
                .ColorIndex = xlAutomatic
            End With
            With Selection.Borders(xlEdgeRight)
                .LineStyle = xlContinuous
                .Weight = xlMedium
                .ColorIndex = xlAutomatic
            End With
            Selection.Borders(xlInsideVertical).LineStyle = xlNone
            Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
            '----------------------
           
            'Avance le compteur d'insersion du nombre de ligne insérer + 1 (ligne suivante de l'insertion)+ 4 ligne vide
            CptLigneInsert = CptLigneInsert + DerLigne - PremLigne + 5
           
            'Passe le marqueur d'onglet au suivant (marqueur de "EXTRACT")
            CptFeuil = CptFeuil + 1
            'Retourne dans le fichier "EXTRACT"
            Application.Workbooks(2).Activate
        Loop
    End If
    'Toute les donnée on été ramener dans l'onglet tempon de Programme
    'Ferme le fichier "EXTRACT" sans sauvgarder le modification
    Application.Workbooks(2).Close (False)
   
    Workbooks.Add 'Crée un nouveau fichier
    Application.Workbooks(2).Activate 'Active le nouveau fichier
    Cells(1, 1).Select 'Selectione la 1ér cellule (haut gauche)
    ActiveSheet.Paste 'Colle le contenu du presse papier
    Cells(1, 1).Select 'Selectione la 1ér cellule (haut gauche)
    Application.Workbooks(1).Activate 'Retourne sur le fichier programme
    Application.DisplayAlerts = False 'Désactive les alerte excel (si non demande confirmation pour suprimer le tempon)
    Worksheets(1).Delete 'Suprime l'onglet tempon
    Application.DisplayAlerts = True 'Réactive les alerte excel
End Sub

En résumer ce code improte toute les données d'un fichier dans un nouvel onglet du fichier dans le quel se trouve le code puis crée un nouveau fichier où coller les données. Tu dois pouvoir l'adapter facilement (plien de commentaire partout)

Voila

 Faut pas s'enerver
mercredi 19 avril 2006 à 00:48:23 | Re : vba excel

safisa

salut; merci bien ca a marché , mais le probleme que j'ai c'est que les données que je vais copier vont respecter l'ordre dans chaque feuille => c-à-d dans chaque feuille de rubrique j'ai parexemple coderubrique aussi intitulé et la daterubrique alor dans une seul feuille je dois copier tous les rubriques qui se trouve dans chaque feuille et les mettre dans une feuille registre mais dans cette feuille les donées qui seront copier devrons etre trier par date (je veut faire le tri dans mon macro) Et svp aidez moi; Et de toute façon merci ;
mercredi 19 avril 2006 à 08:59:14 | Re : vba excel

Polack77

????????????????????????????????????????????????????????????????????
Je n'ai rien compris à ce que tu veux faire.
Si tu veut le nom de ta feuille le code est "workbooks(NumDoc).Worksheets(NumFeuille).name"
remarque : Tu peut mettre un string (qui contient le Nom du doc ou de la feuille plutôt que leur numéro)
Et temps que au trie je n’y ai rien compris???????????

P.S. : Pense à accepter les réponses.


D'oh! Nuts!
Mmmmm...
DONUTS!!!

mercredi 19 avril 2006 à 09:18:17 | Re : vba excel

mortalino

Membre Club
EEEEEh Polack, j'aime les Donuts !!

C'est clair, j'ai rien compris non plus (vu ma photo ...), mais avec le code et les commentaires que tu lui as donné, s'il ne s'en sort pas...

@ + Bonne journée !

  Mortalino 

mercredi 19 avril 2006 à 09:24:32 | Re : vba excel

Polack77

Heeeeeeee rien à voir, Mortalino si tu ti connais en bouton sur Word g un probléme et je ne m'en sort pas.
ça c'est l'adrs de ma question sur ce forum. Merci d'avence
http://www.vbfrance.com/infomsg/BOUTON-SUR-BARRE-OUTILS-WORD-2003-0_717841.aspx

D'oh! Nuts!
Mmmmm...
DONUTS!!!



Cette discussion est classée dans : vba, macro, excel, feuille, classeur


Répondre à ce message

Sujets en rapport avec ce message

macro excel en vba, copier une feuille [ par brice0306 ] Bonjour tout le monde,Juste une dernière question avant de devenir un pro du vba pour excel : Je souhaite ouvrir grace à une macro une deuxième fois [VBA] Ajouter une feuille dans un classeur excel [ par cokinoumasterflash ] Bonjour,J'amerais conaitre la syntaxe en VBA pour ajouter une feuille dans un classeur déjà ouvert. Si qulqu'un sait aussi comment renommer une feuill Macro Excel : exporter une feuille et la sauvarder comme classeur [ par mnt2006 ] Bonjour à tous, 1er post d'un novice sur ce forum et je remercie ceux ou celles qui me viendront en aide.Mon objectif est le suivant : construire une Macro excel : copier une feuille pour ensuite la sauvegarder comme classeur [ par mnt2006 ] Bonjour à tous, 1er post d'un novice sur ce forum et je remercie ceux ou celles qui me viendront en aide.Mon objectif est le suivant : construire une [VBA Excel] Macro plusieurs classeurs [ par swan94 ] Salut à tousJ'ai développé un ensemble de macro sur un classeur. Le problème est que ce classeur résulte d'une extraction et donc plusieurs classeurs envoi feuille excel par macro [ par sam1975 ] Voilà, j'essaie d'envoyer 1 classeur par mail via macro, pour tester ma macro j'essaie de m'envoyer le classeur mais celui-ci n'arrive jamais dans ma Exploiter deux fichier Excel grace à VBA [ par DjVen ] Je suis désolé de sollicité encore une fois votre aide, je suis vraiment pas doué. Je suis sous VBA/Excel et j'ai donc deux fichier EXCEL d'ouvert. Le macro Excel 2000 [ par Monlieutenant ] Bonjour,Je me suis fait un planning dans une feuille excel pour gérer le temps de travail de mes collaborateurs dans une journée. J'ai fait une macro Protection feuille excel [ par newland ] Bonsoir,Voila j'ai récup un classeur excell et dedans il y a une feuille qui est protégé par mot de passe.Le classeur en lui meme n'est pas protegeje programmer une alerte en VBA sous Excel [ par drine des iles ] Bonjour,Je voudrais programmer des alertes dans un tableur excel.Exemple : j'inscrit la date 13-09-2006 dans la cellule A1 de la feuille 2 de mon clas


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,747 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales