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 :

Aide vba excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut Aide vba excel
    J'ai besoin daide pour écrire un truc simple en VBA.
    Comment faire pour que quand j'écrive quelque chose en A1, cela soit copier automatiquement dans A3?
    Comment faire si en suite je veux considérer toutes les colonnes. C'est à dire faire le meme copier coller : que la valeur de la cellule 3 soit égale automatiquement à celle de la cellule 1 pour les 10 premières colonnes??
    Merci pour votre aide par avance !
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu...
    bonjour

    pour ta cellule a3 c'est

    dans la cellule tu ecrit
    "=A1"
    ensuite pour le reste il faut etre plus clair

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut re
    jai pensé a écrire un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub calculs()
    For i = 1 To 10
    Cells(1, i).Value = Cells(3, i).Value
    Next i
    End Sub
    mais le probleme cest que quand técris quelque chose dans une cellule de ligne 1, il faut activer la macro pour que la cellule de la ligne 3 correspondante se mette à jour. Comment faire pour que ce soit "automatique"?

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Dans le module de la feuille concernée, tu places cette procédure évènementielle qui déclenchera la procédure "calculs" à chaque modification de la cellule "A1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count = 1 And Target.Address(0, 0) = "A1" Then calculs
    End Sub
    Pour plus d'info sur les procédures évènementielles, voir ICI

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut
    Ok mais je ne comprends pas comment l'écrire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub calculs()
    For i = 2 To 6
    Cells(6, i).Value = Cells(2, i).Value
    Next i
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 And Target.Address(0, 0) = "B2:B6" Then calculs
    End Sub
    il sert a koi le target addres ?
    Pk ca me demande toujours d'exécuter la macro ?

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par Mokia34 Voir le message
    il sert a koi le target addres ?
    Il sert, dans ton cas, à définir sur quelle cellule (Target = cible = cellule) la macro doit s'exécuter lorsqu'il y a modification du contenu de cette cellule. Tu as l'explication via le lien que je t'ai donné

    Citation Envoyé par Mokia34 Voir le message
    Pk ca me demande toujours d'exécuter la macro ?
    Parce que tu n'as pas mis le code là où je te l'ai dit, les lignes de code ci-dessous ne doivent pas se trouver dans un module standard mais dans le module de la feuille concernée. Dans l'éditeur VBA, double click sur la feuille et place ce code là.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut re
    salut !

    pourtant c'est ce que jai fait il me semble... Non?
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Non !

    Ta première question à pour objet la détection de l'écriture dans une seule cellule (A1) alors que dans ton code tu essaies de détecter dans une plage de cellules (B1:B6). La méthode pour détecter la modification d'une seule cellule ou une plage de cellules n'est pas tout à fait la même.
    De plus, si j'ai bien compris ce que tu cherches à faire, ce n'est pas la plage (B2:B6) qu'il faut détecter mais la plage (B2:F2)

    Ensuite... le module de la feuille ne dois contenir que la macro évènementielle, le reste du code doit se trouver dans module standard

    Bref...
    Code à placer dans le module de la feuille : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B2:F2")) Is Nothing Then calculs
    End Sub
    Code à placer dans module standard : 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 calculs()
    Dim i As Integer, j As Integer, fin_plage As Integer
     
    'copie des lignes
    For i = 2 To 6
    Cells(6, i).Value = Cells(2, i).Value
    Next i
     
    ' blocage cellules
    'Private Sub Worksheet_Change(ByVal Target As Range)
      fin_plage = Range("H3").Value + 1
     
       For i = 2 To fin_plage
           If Application.CountA(Range(Cells(2, i), Cells(4, i))) > 2 Then
            MsgBox "Non !!"
            Application.Undo
        End If
        Next i
     
        For j = 2 To fin_plage
            If Application.CountA(Range(Cells(6, j), Cells(10, j))) > 3 Then
            MsgBox "Non !!"
            Application.Undo
        End If
        Next j
     
    End Sub

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut re
    oui cest ca
    je veux que une copie des lignes correspondantes donc B2:F2 en B6:F6 etc etc
    et un blocage du remplissage de plus de 2 cellules dans les blocs de 3 cellules comme par exemple dans B2:B4
    et je comprends pas pourquoi ce que j'essaye de faire, ca marche pas (apres modification selon des instructions précédentes)
    Fichiers attachés Fichiers attachés

  10. #10
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Regarde le fichier joint et dis-nous si c’est le résultat que tu souhaites obtenir.
    La copie est réalisée chaque fois que tu renseignes une cellule de la plage B2 :F4 et le blocage est réalisé à ce même moment.

    Cordialement.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut
    bonjour,
    en fait cest exactement un truc comme ça qu'il faudrait. mais j'ai une contrainte : je ne peux pas ordonner les lignes et du coup la considération par blocs de lignes ne fonctionne pas
    je te mets un fichier en exemple pour etre plus claire car j'explique pas bien

    est ce que tu penses que cest possible à faire ou non???
    Fichiers attachés Fichiers attachés

  12. #12
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Je constate surtout que ta demande évolue à chacun de tes messages.
    Si tu continues à ajouter des bouts de ficelle, tu vas très certainement aboutir à un "truc" comme tu le dis si bien .

    Cordialement.
    Fichiers attachés Fichiers attachés

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Par défaut re
    bonjour
    oui je sais que je suis fatiguante mais je pensais que c'était mieux de poser des questions étape par étape mais peut etre pas finalement
    et en plus, javais quelques contraintes supplémentaires.....
    jai essayé d'adapter ton travail à celles-ci mais je comprends pas pourquoi du coup le blocage du remplissage des cellules ne marchent plus pour le bloc 1 et le 2
    sais tu pourquoi?
    Fichiers attachés Fichiers attachés

  14. #14
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Avant de modifier le code, il faut que tu comprennes chacune de ses lignes.
    Il est basé sur le traitement de cellules en fonction de leur position dans la feuille. Si tu modifies la structure de ton tableau (ajout ou insertion de lignes par exemple), le code doit être modifié en conséquence. Si la structure n’est pas figée, ce code ne pourra pas convenir en l’état.
    Désolé d’insister lourdement, mais si tu ne parviens pas à définir très exactement le résultat attendu, tu vas galérer sévère.
    Exemple de misères dans ton tableau : il y a maintenant 6 lignes d’en-tête avec 2 lignes qui reprennent les jours de la semaine. La hauteur des en-têtes de bloc sont parfois de 2 lignes et parfois de 1 ligne, la hauteur des blocs semble variable, leur nombre aussi, .... waouh !

    Cordialement.

Discussions similaires

  1. [XL-2010] Aide Vba Excel
    Par fabrice90 dans le forum Excel
    Réponses: 1
    Dernier message: 08/12/2012, 09h49
  2. [XL-2007] Problème sur l'aide VBA excel
    Par Airone784 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2011, 09h37
  3. [XL-2010] Besoin d'aide VBA excel
    Par thirdeye dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/09/2010, 19h29
  4. [XL-2003] Demande d'aide VBA Excel
    Par popo2009 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/02/2010, 19h38
  5. [Wanted] Recherche fichier VBAXL8.HLP (Aide VBA Excel 97)
    Par USV dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/04/2006, 22h04

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