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 :

Code ne fonctionne pas et je ne vois pas ou est le problème . [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    chef d'equipe agro
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : chef d'equipe agro
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Par défaut Code ne fonctionne pas et je ne vois pas ou est le problème .
    Bonjour ,débutant en VBA je me suis lancé et preparé un tableau qui doit me donner un nombre de cuisinier suivant les recettes au planning (planning qui change toute les semaines ).
    Voici le code qui ne fonctionne pas ,si vous pouvez me guider :


    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    Sub chargementplanning()
    '
    'chargementplanningmacro
    '
    Dim i As Long
    i = 2
    j = 2
    Sheets("ordo").Select
    Application.ScreenUpdating = False
    'exporte le 1er jour de la semaine
    While Cells(i, 1) = Range("a2")
    'copie "code article"
    Cells(i, 2).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 2).Select
    ActiveSheet.Paste
     
    Sheets("ordo").Select
    'copie"cuisinier"
    Cells(i, 3).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 3).Select
    activesheets.Paste
     i = i + 1
     j = j + 1
     
    Wend
     
    'exporte le 2eme jour de la semaine
    Sheets("ordo").Select
    j = 16
    While Cells(i, 1) = Range("a2")
    'copie "code article"
    Cells(i, 2).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 2).Select
    activesheets.Paste
     
    Sheets("ordo").Select
    'copie "cuisinier"
    Cells(i, 3).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 3).Select
    activesheets.Paste
    i = i + 1
    j = j + 1
     
    Wend
     
    'exporte le 3eme jour de la semaine
    Sheets("ordo").Select
    j = 30
    While Cells(i, 1) = Range("a2")
    'copie "code article"
    Cells(i, 2).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 2).Select
    activesheets.Paste
     
    Sheets("ordo").Select
    'copie "cuisinier"
    Cells(i, 3).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 3).Select
    activesheets.Paste
    i = i + 1
    j = j + 1
     
    Wend
     
    'exporte le 4eme jour de la semaine
    Sheets("ordo").Select
    j = 44
    While Cells(i, 1) = Range("a2")
    'copie "code article"
    Cells(i, 2).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 2).Select
    activesheets.Paste
     
    Sheets("ordo").Select
    'copie "cuisinier"
    Cells(i, 3).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 3).Select
    activesheets.Paste
    i = i + 1
    j = j + 1
     
    Wend
     
    'exporte le 5eme jour de la semaine
    Sheets("ordo").Select
    j = 58
    While Cells(i, 1) = Range("a2")
    'copie "code article"
    Cells(i, 2).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 2).Select
    activesheets.Paste
     
    Sheets("ordo").Select
    'copie "cuisinier"
    Cells(i, 3).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("planning").Select
    Cells(j, 3).Select
    activesheets.Paste
    i = i + 1
    j = j + 1
     
    Wend
    End sub
    Bon dimanche et d'avance merci !!

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    L'erreur est là
    pas de "s"
    si la ligne avait été écrite correctement, le VBA applique des majuscules automatiquement,
    Vous pouvez modifier votre code en appliquant le recopiant le principe suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim i As Long, j As Long
        Application.ScreenUpdating = False
        i = 2
        j = 2
        'exporte le 1er jour de la semaine
        While Sheets("ordo").Cells(i, 1) = Range("a2")
            'copie "code article"
            Cells(i, 2).Copy Sheets("planning").Cells(j, 2)
            'copie"cuisinier"
            Cells(i, 3).Copy Sheets("planning").Cells(j, 3)
            i = i + 1
            j = j + 1
        Wend
    Cdlt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    chef d'equipe agro
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : chef d'equipe agro
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Par défaut
    Bonjour et merci pour cette réponse rapide et oui c'est tout bête mais en faisant le copier/coller j'ai répété l'erreur jusqu'au bout .
    Néanmoins cela ne fonctionne pas .
    Je joint une copie des deux feuilles que je souhaite mettre en relation via cette macro .
    l'idée est que je souhaite obtenir le nombre de cuisiniers pour chaque jour de la semaine pour en faire le total (ce qui me permet de voir clairement si j'ai les ressources nécessaire vs plan de charge)
    or quand je lance la macro je n'obtient que les nombre de cuisinier de C2 à C16 et pas de code recette ..
    J'ai du louper quelque chose ..cuisine .xlsmcuisine .xlsm
    Merci ,
    Franck.

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Avant de dire "Néanmoins cela ne fonctionne pas", il faudrait se poser les bonnes questions.
    -Tout d'abord, le bout de code que j'avais mis était à reproduire pour les autres jours de la semaine, étant donné que c'était répétitif, je pensais que vous l'auriez compris.
    -Mais même en recopiant, vous avez trouvé le moyen de rajouter la ligne "ActiveSheet.Paste", alors qu'elle n'existait pas dans mon code.
    -De plus, le code doit se trouver uniquement dans le module1 standard et pas une deuxième fois dans le module "ThisWorkbook"
    -Ensuite, même en recopiant le code correctement et pour tous les jours, cela n'aurait pas fonctionné non plus, car maintenant que je vois la construction de votre fichier, vous faites toujours référence à la cellule A2 de la feuille "ordo", donc cela ne pouvait pas marcher pour les autres jours.

    Maintenant, s'il s'agit uniquement de recopier l'intégralité de la feuille "ordo" dans la feuille planning" en séparant les jours et en y insérant des titres pour chaque jour, il est inutile de faire des boucles, une copie de la feuille "ordo" vers la feuille "planning", suivi d'une séparation des journées était suffisant et très rapide.
    Voici votre fichier avec le code intégral adéquat
    Pièce jointe 572894

    Le code dans le module 1 standard
    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
    Sub chargement_planning()
        'Déclaration des variables
        Dim i As Long, DerLig_f1 As Long
        Dim f1 As Worksheet, f2 As Worksheet
     
        Application.ScreenUpdating = False 'Empêche le raffraîchissement de l'affichage à l'écran, augmente la vitesse d'exécution
        Set f1 = Sheets("ordo") ' désignation raccourcie des différentes feuilles
        Set f2 = Sheets("planning")
        f2.Cells.ClearContents 'Effacement des précédents résultats
        DerLig_f1 = f1.Range("A" & Rows.Count).End(xlUp).Row ' Dernière ligne de la feuille "ordo"
        f1.Range("A1:C" & DerLig_f1).Copy f2.Range("A1") 'copie de la feuille "ordo" vers feuille "planning"
     
        'séparation par journée
        For i = DerLig_f1 To 2 Step -1
            If f2.Cells(i, "A") <> f2.Cells(i - 1, "A") Then
                Range(f2.Cells(i, "A"), f2.Cells(i, "C")).Insert Shift:=xlDown 'insertion d'une ligne
                f2.Cells(i, "A") = Format(f2.Cells(i + 1, "A"), "dddd") 'insription du jour de la semaine
                Range(f2.Cells(i, "B"), f2.Cells(i, "C")).Value = Array("Code article", "Cuisinier")
                Range(f2.Cells(i, "A"), f2.Cells(i, "C")).Insert Shift:=xlDown 'ajout d'une ligne vierge de séparation
            End If
        Next i
        f2.Rows("1:2").Delete ' suppression des 2 premières lignes
     
        'Libération de l'espace mémoire
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Cdlt

  5. #5
    Futur Membre du Club
    Homme Profil pro
    chef d'equipe agro
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : chef d'equipe agro
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Par défaut
    Bonsoir ,vos remarques sont pertinentes ,j'ai du perdre patiente et fait n'importe quoi (grr) a force de chercher a comprendre on n'y comprends plus rien..

    Merci pour votre réponse et le code qui fonctionne a merveille ,j'y ai fait quelques modifications car j'ai étendu mes besoins d'information a collationner dans mon fichier planning.
    Je vais d’ailleurs tenter de dupliquer le code pour connaitre les besoin en RL,CM,CL (en clair tous les postes clés de l'entreprise ou je travaille)
    merci pour votre aide précieuse .
    Cordialement,
    Franck .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Code ne fonctionnant pas sur d'autres ordi
    Par Fatjo dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 09/11/2007, 12h23
  2. Réponses: 2
    Dernier message: 30/09/2007, 18h05
  3. mon premier code ne fonctionne pas.
    Par argon dans le forum Langage
    Réponses: 1
    Dernier message: 22/06/2007, 21h06
  4. [MySQL] Mon code ne fonctionne pas correctement
    Par bebas dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/02/2007, 13h27
  5. Code ne fonctionne pas !
    Par ddubois dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/03/2006, 17h53

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