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 :

Copie de valeurs dans une feuille [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Par défaut Copie de valeurs dans une feuille
    Bonjour,

    Je reviens suite à mon projet en cours de construction ( voir lien )
    http://www.developpez.net/forums/d13...r-utilisateur/
    Je vois à peu près le bout maintenant mais il me reste une dernière étape qui est loin d'être la moindre.
    En effet, j'aimerai maintenant résumer tout ce qu'aura saisie l'utilisateur et les résultats trouvés par calcul sur une feuille que j'ai nommé "Cumule".
    J'aimerai qu'à chaque fois qu'on appuie sur le bouton "Calculer",
    on ajoute une ligne contenant toutes les informations découlant du résultat de la macro Calculer() sur la feuille "Cumule".
    Je joins l'ensemble du projet.
    Pour tester le programme il faut d'abord appuyer sur le bouton "Nouvelle Saisie".
    Puis pour la saisie de la largeur, il faut saisir sur la cellule en jaune.
    Je continue de jeter un oeil afin de voir comment je peux partir, parce que je me connais, je pose d'abord ma demande ici puis je réfléchis après.
    En attendant toute bonne aide est la bienvenue !
    Merci beaucoup
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut copie de valeur dans une feuille
    bonjour,

    peut être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    whith sheets("cumlule")
        .range ("L1") = Sheets("trucmuch").[C2]
        .activecell.offset(0,1) = Sheets("trucmuch").[C3]
        .activecell.offset(0,2) = Sheets("trucmuch"). [C4]
        'et ainsi de suite
    end with
    Les cellules indiquées sont sans rapport avec ton cas.
    -L1 peut être une autre cellule de ton choix

    C2, C3, C4 et d'autres cellules éventuelles correspondent aux cellules de la feuille "trucmuch" contenant les résultats que tu souhaites importer dans "cumule".

    L'offset est un décalage arbitraire d'un colonne vers la droite mais tu peux faire un autre choix.

    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Par défaut
    Merci pour ce début de réponse.
    Je compte partir de là et étoffer un peu l'ensemble pour avoir ce que je veux, notamment dynamiser le déroulement du programme.
    Par contre j'ai une erreur lorsque j'exécute le code.
    J'aimerai faire d'abord un petit teste pour voir ce que ça donne.
    J'ai ça comme code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    .Range("A12") = Sheets("Présentation").[B13] ' copie type de section
        .ActiveCell.Offset(0, 1) = Sheets("Présentation").[B15] ' copie type de mécanisme
        .ActiveCell.Offset(0, 2) = Sheets("Présentation").[B17] ' copie type de dimension
        .ActiveCell.Offset(0, 3) = Sheets("Présentation").[C19] 'copie largeur saisie
        .ActiveCell.Offset(0, 4) = Sheets("Présentation").[F28] 'copie largeur cassette
        .ActiveCell.Offset(0, 5) = Sheets("Présentation").[F24] 'copie prix fournisseur
        .ActiveCell.Offset(0, 6) = Sheets("interm").[B14] 'copie PA
        .ActiveCell.Offset(0, 7) = Sheets("interm").[B] 'copie PA + port 15%
        .ActiveCell.Offset(0, 8) = Sheets("Présentation").[F26] 'copie PV
    J'ai ce message d'erreur dès le premier : .ActiveCell.Offset(0, 1)
    " Propriété ou méthode non gérée par cet objet."
    Je ne vois pas pourquoi ?
    Merci pour ton aide

    J'ai remplacé tous les .ActiveCell par .Range("A12") et ça marche.
    Je pense qu'il y a un problème de type.
    Je crois que pour VBA, .ActiveCell n'est pas un objet, il n'a pas donc de méthode Offset.
    Merci pour cette piste, je continue de creuser

  4. #4
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut copie de valeur dans une feuille
    bonsoir,

    avais-tu, avec activecell, mis tes lignes entre whith sheets("cumlule") et end with ?

    a+

  5. #5
    Membre confirmé
    Homme Profil pro
    Avide d'apprentissage
    Inscrit en
    Avril 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Avide d'apprentissage
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 80
    Par défaut
    Bonsoir,
    Oui je les avais bien mis !

    Voici mon avancement mais ne marche pas ^^ !
    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
     
    dim k as Range
    dim tmp as integer
     
    With Sheets("Cumule")
        For Each k In Worksheets("Cumule").Range("B12:B81")
            If Not IsEmpty(k) Then
                tmp = k.Row
            Else
                k = Sheets("Présentation").[B13]
                k.Offset(0, 1) = Sheets("Présentation").[B15] ' copie type de mécanisme
                k.Offset(0, 2) = Sheets("Présentation").[B17] ' copie type de dimension
                k.Offset(0, 3) = Sheets("Présentation").[C19] 'copie largeur saisie
                k.Offset(0, 4) = Sheets("Présentation").[F28] 'copie largeur cassette
                k.Offset(0, 5) = Sheets("Présentation").[F24] 'copie prix fournisseur
                k.Offset(0, 6) = Sheets("interm").[B14] 'copie PA
                k.Offset(0, 7) = Sheets("interm").[D17] 'copie PA + port 15%
                k.Offset(0, 8) = Sheets("Présentation").[F26] 'copie PV
                k.Offset(0, -1) = 1
            End If
        Next
         Range("tmp+1:81").Select
        Selection.ClearContents
    End With
    L'utilisation de la boucle fait que tout se remplie et ce n'est ce que je veux bien sûr.
    Je comptais utiliser la boucle puis effacer ensuite les lignes dont je ne veux pas qu'elles soient remplies, en détectant le dernier remplie.
    Je sais que c'est un peu tordue comme solution mais je pense que ça devrait marcher.
    Le problème c'est j'ai un gros problème de syntaxe puisque VBA ne reconnait pas cette écriture : Range("tmp+1:81").Select (pour la sélection des lignes),
    je ne vois pas comment faire autrement pour sélectionner ces lignes sans passer par ma variable tmp.
    Help !

  6. #6
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut copie de valeur dans une feuille
    bonjour Akuma8,

    La syntaxe range est : range("B81") ou B= colonne et 81= n° ligne
    or tu n'entres que des nombres dans ton expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("tmp+1:81").Select
    puisque ta variable tmp est de type integer (n° ligne).
    De plus, pourquoi les : qui signifient un plage de plusieurs cellule

    - Veux-tu te positionner sur B82 ou B81 alors écrit [B82] ou [B81]
    - Veux-tu sélectionner, comme je le pense, la ligne entière alors écrit

    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
    dim k as Range
    dim tmp as integer
     
    With Sheets("Cumule")
        For Each k In .Range("B12:B81")
            If Not IsEmpty(k) Then
                tmp = k.Row
            Else
                k = Sheets("Présentation").[B13] 'pourquoi initialiser range à "B12" plus haut
                k.Offset(0, 1) = Sheets("Présentation").[B15] ' copie type de mécanisme
                k.Offset(0, 2) = Sheets("Présentation").[B17] ' copie type de dimension
                k.Offset(0, 3) = Sheets("Présentation").[C19] 'copie largeur saisie
                k.Offset(0, 4) = Sheets("Présentation").[F28] 'copie largeur cassette
                k.Offset(0, 5) = Sheets("Présentation").[F24] 'copie prix fournisseur
                k.Offset(0, 6) = Sheets("interm").[B14] 'copie PA
                k.Offset(0, 7) = Sheets("interm").[D17] 'copie PA + port 15%
                k.Offset(0, 8) = Sheets("Présentation").[F26] 'copie PV
                k.Offset(0, -1) = 1
            End If
        Next
         Range("B82").Select
        Selection.ClearContents
    End With
    cordialement.

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

Discussions similaires

  1. [XL-2003] Macro pour copie de valeurs d'une feuille dans une autre
    Par lili189 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/10/2012, 09h25
  2. Recherche d'une valeur dans une feuille
    Par maxeur dans le forum Excel
    Réponses: 3
    Dernier message: 29/02/2008, 02h07
  3. Recherche de valeur dans une feuille et affichage dans une autre
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/05/2007, 10h40
  4. affichage de valeur dans une feuille excel
    Par blanka6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2007, 15h25
  5. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 23h38

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