Vba

cbastoune -  
 olivier -
Bonjour,
Je souhaite recopier les noms de 3 feuilles (1,2,3) sur une 4eme feuille (4) (même classeur). Cette 4eme feuille me servira de base de données.
Les 3 feuilles(1,2,3) de noms ne sont pas identiques.
Les noms sont écrits dans des colonnes avec des formats différents par feuille(1,2,3) .
Je veux garder les noms dans ces feuilles(1,2,3) car je les alimente au quotidien.
Je veux effectuer une misa à jour au quotidien de ma base de données.
Sauf que je suis moins bon qu'un débutant sur VBA-Excel mais je suis tenace.
Merci pour votre aide si précieuse.
Configuration: Windows XP
Firefox 3.0.1

14 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    bonjour,
    Pour mettre les nom de tes feuilles dans un colonne de la feuille 4 tu tape Alt+F11, tu ajoute un module
    >> Insertion >> Module.
    et dans la fenêtre qui s'ouvre (nommée "Module1") quan c'est le premier tu copie le code ci-dessous
    Sub MetNomFeuille()
    Dim i As Integer
    Dim Nom As String
    Dim L As Long
    Dim C As Integer
        L = 1 'la ligne ou tu veux démarrer l'affichage
        C = 1 'La colonne ou tu veux afficher. 1 pour la colonne A
        Nom = "Feuil3"
        'Nom = "LeNomDeLaFeuilleOuTuVeuxCopier"
        For i = 1 To Worksheets.Count
            If Sheets(i).Name <> Nom Then
                 Sheets(Nom).Cells(i + L - 1, C) = Sheets(i).Name
                End If
        Next i
    End Sub
    Ensuite tu associe cette macro à un bouton, mais pour l'essais tu peu mettre le curseur
    dans la macro et taper F5.
    Si j'ai bien compris ce que tu veux faire.
    A+
    1
  2. olivier
     
    Bonjour : Je te conseille de faire la manip manuellement en enregistrant une macro.
    Il te sera possible ensiute d'ajouter un bouton pour executer ta macro par ex
    0
  3. cbastoune
     
    Merci pour ta réponse rapide...j'ai essayé mais il y a t-il un code vba que je peux modifier après en fonction des feuilles et des colonnes?
    Je pense que quand j'écrivais moins qu'un débutant..j'aurais du écrire nul...
    0
  4. olivier
     
    oui bien sûr.
    Tu as accès au code vba en faisant : Alt+ F11 et thisworkbook
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cbastoune
     
    oui, j'ai bien vu..mais as tu une idée du code que je dois entrer ?
    merci pour ton aide
    0
  7. olivier
     
    Sub Macro1()
    '
    ' CopierNom Macro
    '

    '
    ActiveCell.FormulaR1C1 = "=Feuil1!RC"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=Feuil2!R[-1]C"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "=Feuil3!R[-2]C"
    Range("A4").Select
    End Sub

    J'espère que ca pourra te servir
    0
  8. cbastoune
     
    En fait j'ai un concert bénéfice... la salle est divisée en balcon, sieges, corbeille.
    Feuille1= balcon
    Feuille2= sieges
    Feuille3 =corbeille
    Pour la feuille1 il y a 100 places avec un nom à indiquer pour chaque, c'est la meme chose pour les sieges (feuille2) et le la corbeille (feuille3). Je veux récupérer les noms inscrits pour chaque place et les recopier dans une feuille de compilation (feuille4).
    Je veux faire une mise à jour à chaque fois que les noms sont inscrits au quotidien en les gardant dans les feuilles 1,2,3..je ne sais pas si je suis tres clair.
    En tous cas je vous remercie beaucoup
    0
  9. olivier
     
    si j'ai compris ta question.
    Il faut passer tout simplement par la fonction si de excel. Je te prépare l'exemple.
    Je considère dans mon ex que dans la feuille 1 tu as les place 1 a 50 disons; la feuille 2 51 à 100 et la trois 101 = 150.
    Quelques noms seulement sont remplis a cote des numeros de places et sur la feuille 4 automatiquement s'affiche en colone toutes les reservation avec nom de la personne en colonne a et son numero de siege en B.
    A tout de suite
    0
  10. cbastoune
     
    Oui ca ressemble beaucoup à ton exemple...je croyais qu'on pouvait automatiser en passant par vba, mais si on peut le faire autrement, je suis preneur.
    Un grand merci
    0
  11. olivier
     
    voila envoie moi un mail a contact@olivierstern.com et je t'envoie le doc
    0
  12. cbastoune
     
    oui merci bcp...tu peux m'expliquer en qqs lignes ton cheminement? car en effet''je crois que tu m'as donné la solution à mon probleme
    0
  13. olivier
     
    Et bien en fait disons que sur chaque feuille il y a cinquante places libres qui n'attendent plus qu'un nom.
    Sur la quatrième feuille , cellule A1, on recopie les données de la cellule A1 de la feuille 1 en faisant "= puis clique sur la cellule A1 de la feuille 1".
    Ensuite on tire la cellule (petite flecche en bas a droite de la cel A1 de la feuille4) juqua la cellule A50. Automatiquement, excel va recopier les données des cellules A1 feuille 1 en A1 feuile4 puis A2 feuille1 en A2 feuille4 etc... .
    On refait l'opération pour la celule A51 feuille2 qu'on copie en A51 feuille 4 et on tire la cellule jusqu'en A100 feille4.
    Pareil pour la dernière feuille.
    Ensuite sur la feuille 4 on a en colonne A tous les noms déjà renseignés et en colonne B les sieges correspondant.
    Le probleme c'est qu'il y a aussi les sièges vides qui s'affichent.
    Pour cela il faut filtrer les données. Selectionner colone A feuille 4 et dans données rentrer dans le menu filtrer, puis filtre automatique.
    Les cellule vides etant remplies par un zero, ou vides, il suffit de cliquer sur la fleche qui s'est affichée sur le premier nom et de selectionner le filtre personnalisé : si différent de 0 ou si non vide (= si different de "").
    Automatiquement la feuille 4 n'affichera pas les lignes inutiles.
    Pour actualiser le filtre, il serait possible de le faire manuellement, mais un bouton VBA est tellement plus pratique.
    En faisant Alt F11 on peut voir le code d'actualisation automatique.
    0