Insertion et incrémentation automatique onglets excel + copiage de données [Résolu]

Messages postés
8
Date d'inscription
lundi 4 juin 2012
Dernière intervention
6 juin 2012
- - Dernière réponse :  Riadh73 - 7 nov. 2012 à 17:00
Bonjour à tous,

Je m'adresse à vous en tant que ultra novice en informatique.
Un projet m'a été confié pour créer un petit logiciel permettant d'automatiser certaines taches que l'on fait manuellement et qui sont très fastidieuses.

Je vous met une copie d'écran du classeur.

http://imageshack.us/photo/my-images/85/crateliste.png/
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
23576
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
3
Merci
Bonjour,

voici quelques exemples de code.. a toi ensuite de les adapter selon tes besoins :

Sub test()

'Ajouter un onglet :
ThisWorkbook.Sheets.Add

'Le renomer pour l'incrémenter :
'Au préalable, je compte le Nb d'onglets pour ajouter +1
NB_onglets = ThisWorkbook.Sheets.Count
i = NB_onglets
ThisWorkbook.ActiveSheet.Name = "MonOnglet_" & i

'recupérer des valeurs..
' > 2 facons de faire :
' - Soit tu fais un "copier/coller" ,
' - soit tu récupères leur valeurs (via la propriété .value)

'Exemple de "copier/coller"
    Sheets("Feuil1").Select
    Range("A1").Select
    Selection.Copy
    Sheets("MonOnglet_" & i).Select
    Range("A1").Select
    ActiveSheet.Paste

'exemple avec .value :
Valeur_A_Recup = ThisWorkbook.Sheets(1).Range("B1").Value
ThisWorkbook.Sheets("MonOnglet_" & i).Range("B1").Value = Valeur_A_Recup



End Sub



Par contre pour tes prochaines questions, essayes vraiment de proposer le code que tu as écris. En règle général nous ne fournissons pas de code "tout fait".

Evites aussi de crééer 50 la même question dans plusieurs rubriques.. ça ne sert à rien.

Et pour finir..
si ma réponse te convient, penses à mettre ce sujet en RESOLU.


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI

Merci jordane45 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de jordane45
Messages postés
23576
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
3
Merci
Il serait peut être plus simple si je pouvais joindre mon excel à ce mail?

Tu peux eventuellement déposer ton fichier excel sur un site de partage ( comme cijoint.com ou un autre;. )

pouvoir incrémenter les Range de "Crates_list" à chaque clic

Tout dépend de ce que tu entends par "incrémenter..."
Si tu cherches à te placer à la dernière ligne, il existe des commandes (fonctions) qui te permettent de définir celle-ci.
Ensuite pour l'utiliser tu peux utiliser la syntaxe suivante :
Dim Numero_Derniere_Ligne as integer
Sheets("CRATES_LIST").activate
Numero_Derniere_Ligne = Cells.Find("*", Range_("A1"), , ,xlByRows, xlPrevious).Row 
Sheets("CRATES_LIST").Range("E" & Numero_Derniere_Ligne).select
' ... 


Pour la recopie de tes valeurs, est-ce que tu cherches également à récupérer la mise en forme des cellules ou alors tu ne souhaites avoir que la valeur elle même ?
Si ce n'est que la valeur, passes par des range("A1").value plutot que par de copy/paste




Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI

Merci jordane45 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de jordane45
Messages postés
8
Date d'inscription
lundi 4 juin 2012
Dernière intervention
6 juin 2012
0
Merci
Le but est de créer un bouton (ça j'ai réussi..) qui permette lors du click de créer un onglet "Crate 1" "Crate 2" etc jusqu'à maxi 60.
Les onglets créés ont pour modèle l'onglet "Crate Modele" et comporte dès leur création les informations de bases (en jaune pour l'exemple)

Voici le crate modèle:

http://imageshack.us/photo/my-images/411/cratemodele.png/


En gros je cherche à:
-insérer des onglets de 1 à 60 après l'onglet crate modele
-Copier certaines valeurs d'un onglet à un autre lors de la création


Merci d'avance pour vos précieux conseils!!

Manuel
Commenter la réponse de MANUELMASS
Messages postés
23576
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
0
Merci
Bonjour,

Le proxy de ma boite ne me permet pas d'accéder à ton image.
Quoi qu'il en soit :

1 - Essayes d'expliquer (par des phrases) ce que tu souhaites faire
2 - Montre nous ce que tu as déjà essayé de réaliser.

3 - Tu parles d'Excel.. ne devrais-tu pas poster ta question dans VBA ?


Au passage, pour commencer à apprendre le code...
Vas dans ton excel, lance l'enregistreur de macros, effectues quelques actions (comme ajouter un onglet, copier des données..)
Arrete l'enregistreur et regarde le code généré...




Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
Commenter la réponse de jordane45
Messages postés
8
Date d'inscription
lundi 4 juin 2012
Dernière intervention
6 juin 2012
0
Merci
Bonjour Jordane,

Oui j'ai oublié de préciser que j'ai déjà essayer l'enregistrement ainsi que plusieurs tutoriels mais dès que je cherche à adapter la chose à mon application je suis perdu...

Ce que je souhaite faire lors de chaque clic:
- Ajouter 1 onglet
- Incrémenter l'onglet (Onglet 1 puis Onglet 2 puis Onglet 3 et non Onglet 1, Onglet 1 (2), Onglet 1(3)
- Copier dans ces onglets des valeurs d'un autre onglet qui sont remplie avant le clic

Comment fait on pour modifier l'emplacement du sujet stp?
Manuel
Commenter la réponse de MANUELMASS
Messages postés
8
Date d'inscription
lundi 4 juin 2012
Dernière intervention
6 juin 2012
0
Merci
Bonjour,

Tout d'abord désolé pour les erreurs de débutant en matière de forum. Je ferais attention pour les prochains messages.

Ensuite merci beaucoup pour les conseils, j'ai réussi à ébaucher quelque chose qui pourrait fonctionner en l'améliorant:

Sub Bouton2_Clic()


'Copie de crate modele et collage

Sheets("CRATE_MODELE").Select
Sheets("CRATE_MODELE").Copy After:=Sheets(Sheets.Count)

'Modif du nom de la feuille

NB_onglets = ThisWorkbook.Sheets.Count
i = NB_onglets
ThisWorkbook.ActiveSheet.Name = "CRATE_" & i - 5            '-5 car nombre d'onglet au départ


'Copie des infos poids dimensions
    
    'Copie du poids net
    
    Sheets("CRATES_LIST").Select
    Range("B13").Select
    Selection.Copy
    Sheets("CRATE_" & i - 5).Select
    Range("A13").Select
    ActiveSheet.Paste
    
    'Copie du poids brut
    
    Sheets("CRATES_LIST").Select
    Range("C13").Select
    Selection.Copy
    Sheets("CRATE_" & i - 5).Select
    Range("B13").Select
    ActiveSheet.Paste

    'Copie de la longueur
    
    Sheets("CRATES_LIST").Select
    Range("D13").Select
    Selection.Copy
    Sheets("CRATE_" & i - 5).Select
    Range("C13").Select
    ActiveSheet.Paste

    'Copie de la largeur

    Sheets("CRATES_LIST").Select
    Range("E13").Select
    Selection.Copy
    Sheets("CRATE_" & i - 5).Select
    Range("D13").Select
    ActiveSheet.Paste

    'Copie de la hauteur
    
    Sheets("CRATES_LIST").Select
    Range("F13").Select
    Selection.Copy
    Sheets("CRATE_" & i - 5).Select
    Range("E13").Select
    ActiveSheet.Paste


End Sub



Il me faut maintenant pouvoir incrémenter les Range de "Crates_list" à chaque clic tandis que la Range de destination ne change pas (la feuille seulement change).

Il serait peut être plus simple si je pouvais joindre mon excel à ce mail?
Commenter la réponse de MANUELMASS
Messages postés
8
Date d'inscription
lundi 4 juin 2012
Dernière intervention
6 juin 2012
0
Merci
Je ne pourrai pas uploader mon excel, je n'ai pas l'autorisation sur le serveur.

Pour l'"incrémentation", j'entends passer de range B13 à range B14 lorsque l'on clique pour la deuxième fois sur mon bouton de commande (je travaille dessus en ce moment ça avance un peu). Ce n'est pas obligatoirement ma dernière ligne.
Par contre c'est la ligne directement en dessous de la ligne déjà pleine.

Merci pour le conseil .value, je cherche effectivement uniquement la valeur et pas les bordures.

Je continue ce que je suis en train d'essayer et te tiens au courant quand ce sera plus clair.
Commenter la réponse de MANUELMASS
Messages postés
8
Date d'inscription
lundi 4 juin 2012
Dernière intervention
6 juin 2012
0
Merci
Bon j'ai revu le système pour la numérotation des onglets.

Je viens chercher la dernière valeur de ma liste:
Sheets("CRATES_LIST").Select
Range("A13").Select
Selection.End(xlDown).Select (commande dont tu parlais je pense)

Je souhaite récupérer la valeur de ma selection mais lorsque je met selection.copy, cela ne fonctionne pas

Peux tu m'éclairer?
Commenter la réponse de MANUELMASS
Messages postés
8
Date d'inscription
lundi 4 juin 2012
Dernière intervention
6 juin 2012
0
Merci
Bonjour,

J'ai résolu une bonne partie de mes soucis. J'ai beaucoup de mal mais j'apprends beaucoup de choses.

J'ai un soucis sur mon code. Je n'arrive pas à coller une selection vers le dernier onglet créé.

Sub Bouton2_Clic()

Dim Name As Integer

'Comptage du numéro de caisse

With Range("A13:A52")
      Set c = .Find("", LookIn:=xlValues)
      c.Select
End With

'Selection de la dernière cellule pour créer numéro d'onglet

ActiveCell.Offset(-1, 0).Select
Name = Selection.Value

'Création onglet crate "x" à partir du modèle

Sheets("CRATE_MODELE").Select
Sheets("CRATE_MODELE").Copy After:=Sheets(Sheets.Count)

'Renommage de l'onglet en fonction du nombre de caisses dans la crate list

ThisWorkbook.ActiveSheet.Name = "CRATE_" & Name

'Copie des poids dimensions

Sheets("CRATES_LIST").Select
With Range("A13:A52")
      Set c = .Find("", LookIn:=xlValues)
      c.Select
End With

ActiveCell.Offset(-1, 0).Select
Range(ActiveCell, ActiveCell.Offset(0, 5)).Select
Selection.Copy


'Collage des poids dimensions dans crate_x

'Worksheets(Worksheets.Count).Select
'Range("A13:E13").Select


'ThisWorkbook.Sheets("CRATE_" & Name).Activate
'Range("A13:E13").Select
'Selection.Paste


End Sub



Tout fonctionne jusqu'à mon dernier selection.copy
Le dernier bloc est ce que j'ai essayé mais aucun fonctionnement...

Merci d'avance

Manuel
Commenter la réponse de MANUELMASS
Commenter la réponse de Riadh73

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.