IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

modifications multiples et dynamiques de feuilles


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut modifications multiples et dynamiques de feuilles
    Bonjour,

    Je cherche a faire une macro me permettant de simplifier la vie du service Exportation ou je travaille.
    Pour chaque commande, on envoie 1 ou plusieurs containers contenant un ou plusieurs produits.
    Pour chaque commande, on doit créer plusieurs documents : certificats sanitaire, douane, d'origine, facture,... qui reprennent tous plus ou moins les memes infos

    Je suis parti sur l'idée d'un document Excel contenant plusieurs feuilles : une pour chaque doc administratif (J ai donc passé ces docs a un format "facilement" manipulable via Excel) et une feuille Résumé/Utilisateur qui permette a l utilisateur de remplir une feuille et basta : Toutes les infos remplies vont au bon endroit dans les docs a créer grace a des formules.

    Le souci c est que tant les docs administratifs comme la feuille Utilisateur doivent évoluer selon les réponses combien de containers ? et combien de produits par container ?

    La tache me paraissant ardue pour mes connaissances VBA, je me suis limité a un container multiproduits.

    Pour x Produits, j arrive bien a crér les x lignes sur chaque document qui doivent conserver un format donné.
    J utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'CERTIFICADO DE ORIGEN
            Sheets("CERTIF DE ORIGEN").Select
            Range(Cells(26, 1), Cells(28, 6)).Select
            Selection.Copy
            Cells(26 + 3 * A, 1).Select
            Selection.Insert Shift:=xlDown
    ou A est mon nombre de produits variant de 1 a NombreProduits(rentré par utilisateur)

    Le document utilisateur doit aussi etre modifié pour permettre l entrée des x produits. Et la j ai un probleme, comment coller ces nouvelles infos au lignes rajoutées dans les docs administratifs

    J ai essayé cela qui ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'CERTIFICAT SANITAIRE
            Sheets("CERTIF SANIT").Select
            Cells(20 + A, 3).Value = Selection.Offset(11, 1).Range("C75").Value
    ou A est mon nombre de produits variant de 1 a NombreProduits(rentré par utilisateur)


    Je voulais récupérer de ma feuille résumé la bonne info pour le bon produit. Pour chaque type d'info j ai un point de repere ici C75 et je décale de 11 cases car c'est le nombre d infos que j ai spécifique produit. Si C75 correspond au poids du produit 1 par exemple C86 correspondra au poids du produit 2.
    Comme je vous disais ca ne marche pas (mais je n ai pas de message d erreur) : je pense que c est lié a l'utilisation que je fais de Offset() et aussi sans doute savoir a quelle feuille s'applique le Selection.Offset(11, 1).Range("C75").Value mais je vois pas comment faire autrement.

    Je pensais changer completement d idee et faire une userform qui lorsque tu renseignes le nombre de produits s'adapte et te permette de remplir ces 11*nombre de produits dans la userform mais la je suis fortement dépassé.

    Donc voila je ne sais pas ce que cela vous inspire.
    Dans tous les cas j'aimerais bien que la solution ne ferme pas la porte a un ajout (un jour qui sait !) de la question nombre de containers avant nombre de produits par container.
    Merci

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    reBonjour
    Je vous donne un peu plus de détails parce que mon probleme n a pas l air d emballer les foules ce que je concois tout a fait d ailleurs !
    Alors voila ce que j ai fait dans un premier temps. Je voulais pas trop tout mettre parce que c est toujours le meme code qui revient mais peut etre que ce sera plus clair de cette maniere.
    En réalité, cela me permet seulement de traiter le nombre de containers mais pas celui de produits par container.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    Private Sub CommandButton1_Click()
        'Récupérer le nombre de containers de la commande
        NContenedor = TextBox1.Value
     
        'Traite le cas : nombre de contenedor=1
        If (NContenedor = 1) Then
            Unload UserForm1
            Else
        End If
     
        Dim A As Integer
        For A = 1 To NContenedor - 1
            'CERTIFICAT SANITAIRE
            Sheets("CERTIF SANIT").Select
     
            'Ajouter tableau produits pour nouveau container
            Range(Cells(19, 1), Cells(21, 8)).Select
            Selection.Copy
            Cells(19 + 3 * A, 1).Select
            Selection.Insert Shift:=xlDown
            'Me permet de distinguer le nouveau container : 
            'container 2 =B1 pour 2eme container  premier produit
            'container 3 = C1 pour 3 eme container 1er produit ...
            Cells(20 + 3 * A, 2).Value = Mid("1B1C1D1E1F1G1", A * 2, 2)
     
            'Ajouter ligne description Produits pour nouveau container
            Range(Cells(19 + 5 + 3 * A, 1), Cells(19 + 5 + 3 * A, 8)).Select
            Selection.Copy
            Cells(19 + 5 + 3 * A + A, 1).Select
            Selection.Insert Shift:=xlDown
            Cells(19 + 5 + 3 * A + A, 2).Value = Mid("1B1C1D1E1F1G1", A * 2, 2)
     
            'Ajouter ligne Container+Seal pour un nouveau container
            Range(Cells(19 + 36 + 4 * A, 1), Cells(19 + 36 + 4 * A, 8)).Select
            Selection.Copy
            Cells(19 + 36 + 4 * A + A, 1).Select
            Selection.Insert Shift:=xlDown
            Cells(19 + 36 + 4 * A + A, 2).Value = Mid("ABCDEFG", A + 1, 1)
     
            'ADUANA
            Sheets("ADUANA").Select
     
            Range(Cells(47, 1), Cells(47, 12)).Select
            Selection.Copy
            Cells(47 + A, 1).Select
            Selection.Insert Shift:=xlDown
            Cells(47 + A, 1).Value = Mid("1B1C1D1E1F1G1", A * 2, 2)
     
            Range(Cells(47 + 6 + A, 1), Cells(47 + 6 + A, 12)).Select
            Selection.Copy
            Cells(47 + 6 + A + A, 1).Select
            Selection.Insert Shift:=xlDown
            Cells(47 + 6 + A + A, 1).Value = Mid("1B1C1D1E1F1G1", A * 2, 2)
     
            Range(Cells(47 + 8 + 2 * A, 1), Cells(47 + 10 + 2 * A, 12)).Select
            Selection.Copy
            Cells(47 + 8 + 2 * A + 3 * A, 1).Select
            Selection.Insert Shift:=xlDown
            Cells(48 + 8 + 2 * A + 3 * A, 1).Value = Mid("1B1C1D1E1F1G1", A * 2, 2)
     
     
            'PACKING LIST
            Sheets("PACKING LIST").Select
     
            Range(Cells(23, 1), Cells(27, 9)).Select
            Selection.Copy
            Cells(23 + 5 * A, 1).Select
            Selection.Insert Shift:=xlDown
     
     
            'CERTIFICADO DE ORIGEN
            Sheets("CERTIF DE ORIGEN").Select
     
            Range(Cells(26, 1), Cells(28, 6)).Select
            Selection.Copy
            Cells(26 + 3 * A, 1).Select
            Selection.Insert Shift:=xlDown
     
     
            Unload UserForm1
     
        Next A
     
    End Sub

    Donc ca ca marche plutot pas mal toutes mes feuilles sont au bon format pour recevoir l'information. Mais comment est il possible d'ajouter une ligne dans chaque bloc qui vienne crér un lien entre : "les lignes rajoutées dans les docs administratifs" et les "lignes rajoutées dans le formulaire utilisateur" ???
    L objectif est que l utilisateur précise son nombre de containers, de produits par container, cela actualiserait les formats et le formulaire. L utilisateur remplit ensuite le formulaire et peut automatiquement récupérer tous ces docs administratifs.
    Merci de votre aide

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/08/2008, 13h53
  2. Modif de couleurs dans une feuille CSS
    Par patoche36 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 04/08/2008, 11h59
  3. modifications multiples dans une séquence
    Par Jasmine80 dans le forum Langage
    Réponses: 4
    Dernier message: 20/02/2008, 08h42
  4. Créer un tableau dynamique des feuilles à imprimer
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/08/2007, 10h13
  5. [MySQL] Multiples valeurs dynamiques en POST
    Par Runan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/05/2006, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo