Insertion et incrémentation automatique onglets excel + copiage de données

Résolu
MANUELMASS Messages postés 8 Date d'inscription lundi 4 juin 2012 Statut Membre Dernière intervention 6 juin 2012 - 4 juin 2012 à 15:40
 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/

10 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
5 juin 2012 à 08:33
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
3
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
5 juin 2012 à 11:48
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
3
MANUELMASS Messages postés 8 Date d'inscription lundi 4 juin 2012 Statut Membre Dernière intervention 6 juin 2012
4 juin 2012 à 15:49
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
4 juin 2012 à 15:50
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
0

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

Posez votre question
MANUELMASS Messages postés 8 Date d'inscription lundi 4 juin 2012 Statut Membre Dernière intervention 6 juin 2012
4 juin 2012 à 17:16
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
0
MANUELMASS Messages postés 8 Date d'inscription lundi 4 juin 2012 Statut Membre Dernière intervention 6 juin 2012
5 juin 2012 à 09:49
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?
0
MANUELMASS Messages postés 8 Date d'inscription lundi 4 juin 2012 Statut Membre Dernière intervention 6 juin 2012
5 juin 2012 à 12:33
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.
0
MANUELMASS Messages postés 8 Date d'inscription lundi 4 juin 2012 Statut Membre Dernière intervention 6 juin 2012
5 juin 2012 à 15:28
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?
0
MANUELMASS Messages postés 8 Date d'inscription lundi 4 juin 2012 Statut Membre Dernière intervention 6 juin 2012
6 juin 2012 à 17:45
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
0
0
Rejoignez-nous