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 :

Mon Code VBA ne fonctionne pas toujours [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Mon Code VBA ne fonctionne pas toujours
    Bonjour
    je suis confronté à une curiosité : le code VBA ci dessous ne fonctionne pas toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Loop3 As Integer
     
        Sheets("FEUILLE CANTINE VIERGE").Select
        ActiveSheet.Shapes.Range(Array("RECT_PERIODE", "RECT_FOND")).Select
        Selection.Copy
        Sheets("FEUILLES GENEREES").Select
     
    For Loop3 = 1 To Nb_Familles
        Dim Ligne8 As String
        Ligne8 = Loop3 * 21 - 14
     
        Range("B" & Ligne8).Select
        ActiveSheet.Paste
    Next Loop3
    Cela marche de temps en temps en le lançant depuis le bouton ; cela fonctionne systématiquement si je suis en mode pas à pas (F8)
    Quand cela foire, c'est au niveau de la ligne ActiveSheet.Paste

    Pour expliquer le processus, je vais sur une feuille "modèle" copier 2 images pour pouvoir les coller x fois sur une autre feuille
    J'ai le sentiment que le problème vient + de là : ActiveSheet.Shapes.Range(Array("RECT_PERIODE", "RECT_FOND")).Select
    (j'ai déjà essayé de grouper les 2 images, mais cela revient à la même chose...)

    Quelqu'un aurait une piste à me proposer pour résoudre ce problème ?
    Merci par avance

  2. #2
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Bonjour

    Reprise de ton code

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Dim Loop3 As Integer
     
        Sheets("FEUILLE CANTINE VIERGE").Select
        ActiveSheet.Shapes.Range(Array("RECT_PERIODE", "RECT_FOND")).Select
        Selection.Copy
        Sheets("FEUILLES GENEREES").Select
     
    For Loop3 = 1 To Nb_Familles
        Dim Ligne8 As String
        Ligne8 = Loop3 * 21 - 14
     
        Range("B" & Ligne8).Select
        ActiveSheet.Paste
    Next Loop3

    Je n'ai pas mon PC pour tester mais juste mon smartphone pour répondre.

    Tu as à lecture du code plusieurs points:
    _ nb_familles n'est jamais ni déclaré ni initialisé
    _ ligne8 est déclaré dans une boucle et en string alors qu'apparament tu fais une addition avec et en plus tu t'en sers comme référence de ligne

    Je ne dis pas que c'est la source de ton erreur mais c'est pour le moins incorrect.

  3. #3
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut
    Bonjour
    merci pour le retour.
    Le bout de code publié pour ma question n'est effectivement qu'un extrait. Les éléments sont bien déclarés au préalable.

    Pour le "ligne_8", j'ai cette très mauvaise habitude de déclarer en string tu as raison. Sinon, je me sers bien de cette info pour trouver une ligne où copier mes 2 cadres.
    (il faut imaginer un formulaire vierge que je duplique autant de fois que j'ai de familles, les uns sous les autres)

    Depuis ma demande initiale, pour l'utilisation du programme, j'ai remplacé mes 2 formes par des cellules fusionnées et ca fonctionne.
    Je reste néanmoins curieux de savoir pourquoi avec les formes des fois ca passe, et des fois non.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Maintes fois répétés sur ce site, les méthodes Select et objet Selection sont à proscrire.

    Voici un exemple de la copie d'une forme nommée sh_Triangle de la feuille dont le CodeName est shtTemplate vers les cellules de la la ligne 4 et toutes le deux colonnes à partir de la deuxième de la feuille dont le CodeName est shtTarget
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub t()
      Dim c As Integer
      shtTemplate.Shapes("sh_Triangle").Copy
      For c = 2 To 20 Step 2
        With shtTarget
        .Paste Destination:=.Cells(4, c)
        End With
      Next
    End Sub
    Pour savoir ce qu'est le CodeName d'une feuille, voir le billet VBA – CodeName d’une feuille Excel

    [EDIT]
    Ce n'était pas la ligne 10 mais la 4. J'ai corrigé dans le libellé
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre chevronné
    Homme Profil pro
    Formateur bureautique
    Inscrit en
    Janvier 2021
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 302
    Par défaut Merci
    Merci Philippe pour cette correction
    Et désolé si j'ai fait répéter une fois de plus
    Je vais mettre cela en pratique et [peut être] réussir à progresser encore un peu !

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

Discussions similaires

  1. [XL-2007] Code qui ne fonctionne pas toujours
    Par Foxeuh dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/12/2013, 12h16
  2. Pourquoi mon code rotate ne fonctionne pas?
    Par PhilHype dans le forum jQuery
    Réponses: 6
    Dernier message: 04/11/2013, 11h13
  3. [Toutes versions] Code vba ne fonctionne pas pour sous formulaire
    Par 8e8eClo dans le forum IHM
    Réponses: 5
    Dernier message: 23/03/2012, 09h32
  4. code vba ne fonctionne pas
    Par lecaire dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/01/2010, 22h27
  5. Mes codes VBA ne fonctionnent pas sous access 2007
    Par ralfus dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/11/2008, 11h36

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