Vba

Fermé
cbastoune - 9 sept. 2008 à 19:28
 olivier - 9 sept. 2008 à 21:43
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.

14 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 sept. 2008 à 20:21
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
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
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
oui bien sûr.
Tu as accès au code vba en faisant : Alt+ F11 et thisworkbook
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oui, j'ai bien vu..mais as tu une idée du code que je dois entrer ?
merci pour ton aide
0
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
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
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
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
voila envoie moi un mail a contact@olivierstern.com et je t'envoie le doc
0
olivier, as tu reçu mon courriel?
0
Oui je t'ai répondu. Tu as recu ?
0
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
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