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 :

Boucle + change [XL-2007]


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
    Opérateur machine
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 7
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Opérateur machine
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut Boucle + change
    bonjour à tous,

    J'ai un petit souci sur un code VBA
    Après plusieurs semaines de recherche infructueuse, je me tourne vers vous pour y voir un peu plus clair.

    Merci de vos commentaires et de vos lumières.

    Code de la page (feuil1) : (son but est d'écrire une formule dans une ou plusieurs cellules en fonction d'un autre tableau (variable sur une autre page))
    (Si rajouts de données!T20 = 1, alors saisi!k5 = "formule" / Si rajouts de données!T21 = 1, alors saisi!k6 = "formule" / ect ect ....)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_selectionchange_boucle_for(ByVal Target As Range)  
    Dim i As Integer                                                                        
    For i = 20 to 56 
     
    If worksheets("Rajouts Données").Cells(i, 20).Value = 1 Then             
    Range("K" & i - 15).Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[-0]C[-1]="""","""",LEFT(R[-0]C[-1],6))"
     
    End If
     
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Styck3rs Voir le message
    J'ai un petit souci sur un code VBA
    Pourrais-tu être plus explicite sur le "souci" que pose ce code ?
    Plantage ? Quel message d'erreur ? Quelle ligne est désignée par le débugage ?
    Mauvais résultat ? Quel est la différence entre le résultat souhaité et celui obtenu ?

    Même si ton code pourrait être amélioré, il semble fonctionnel.

    Le seul truc qui me choque, c'est le nom du Sub : si tu veux faire une macro évènementielle, tu ne peux pas lui donner le nom que tu veux. Il faut garder son nom.
    En plus, dans le cas d'une macro évènementielle, je suis à peu près persuadé qu'une boucle ne serait pas une bonne idée.
    Bref, j'ai l'impression que tu te mélanges un peu les pinceaux entre une macro évènementielle et une macro déclenchée.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Opérateur machine
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 7
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Opérateur machine
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut
    Salut menhir,

    Oui je dois me mélanger les pinceaux je pense ! (mes codes sont calqués sur l’enregistreur de macro qui a ces limites)
    Le code envoyé ne fonctionne pas, je n'ai pas de message d'erreur particulier, juste pas de lancement de la macro (ou événement)

    J'ai pu crée des événements qui fonctionnes , comme ceci :

    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
    Private Sub Worksheet_selectionchange(ByVal Target As Range)
    
    If worksheets("Rajouts Données").Cells(20, 20).Value = 1 Then
    Range("K5").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[-0]C[-1]="""","""",LEFT(R[-0]C[-1],6))"
    
    End If
    End Sub
    
    Je dois donc écrire le code suivant pour chaque ligne :
    
    Private Sub Worksheet_selectionchange(ByVal Target As Range)
    
    If worksheets("Rajouts Données").Cells(20, 20).Value = 1 Then
    Range("K5").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[-0]C[-1]="""","""",LEFT(R[-0]C[-1],6))"
    
    If worksheets("Rajouts Données").Cells(21, 20).Value = 1 Then
    Range("K6").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[-0]C[-1]="""","""",LEFT(R[-0]C[-1],6))"
    
    If worksheets("Rajouts Données").Cells(22, 20).Value = 1 Then
    Range("K7").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[-0]C[-1]="""","""",LEFT(R[-0]C[-1],6))"
    
    .../...
    
    If worksheets("Rajouts Données").Cells(20+N-1, 20).Value = 1 Then
    Range("K" & 5+N-1).Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[-0]C[-1]="""","""",LEFT(R[-0]C[-1],6))"
    
    ' N= nombre de boucle
     
    End If
    End Sub
    Pour aller plus vite je voulais faire des boucles "For x = y to z step n"
    Mais je pense pas que ce sois possible, sauf en macro déclenché !?
    En faite je dois déclencher mes macros par un événement !?

    Merci de ta réponses rapide, et pardonne moi de mon ignorance
    Bonne Journée a tous

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Un peu de documentation sur les macros évènementielles: https://silkyroad.developpez.com/VBA/EvenementsFeuille/

    En faite je dois déclencher mes macros par un événement !?
    C'est à toi de nous le dire ! On ne peut deviner ce que tu veux faire.
    Si la réponse est oui, tu dois nommer ta sub en fonction de l'évènement déclencheur voulu.

    Pour aller plus vite je voulais faire des boucles "For x = y to z step n"
    Mais je pense pas que ce sois possible, sauf en macro déclenché !?
    Pourquoi ce ne serait pas possible ?

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Styck3rs Voir le message
    juste pas de lancement de la macro (ou événement)
    Comme déjà dit dans mon précédent message, on ne peut pas faire ce qu'on veut avec les noms des macro évènementielles.
    Pour être déclenchée par un évènement, une macro doit porter le nom EXACT correspondant à cet évènement.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Opérateur machine
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 7
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Opérateur machine
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut macro évènementielles
    Oui effectivement .... si ont remplace l’événement par Private Sub Worksheet_Change(ByVal Target As Range),
    Tout fonctionne bien

    Merci a tous

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

Discussions similaires

  1. Programme VBA [boucle, tempo,table d'échange]
    Par Pierrot_Bricolo dans le forum ALM
    Réponses: 1
    Dernier message: 31/07/2012, 10h04
  2. boucle dans une matrice qui change de taille
    Par Ryma_d3 dans le forum MATLAB
    Réponses: 3
    Dernier message: 20/03/2012, 14h35
  3. Savoir si un String a changé dans une boucle for
    Par mouss4rs dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2012, 15h04
  4. ma variable change en dehors de ma boucle
    Par suzan_ dans le forum Débuter
    Réponses: 4
    Dernier message: 12/07/2011, 16h40
  5. Réponses: 2
    Dernier message: 08/07/2011, 15h09

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