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 :

probleme pour entrée une formule avec vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de Labo
    Inscrit en
    Octobre 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de Labo
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2024
    Messages : 4
    Par défaut probleme pour entrée une formule avec vba
    Bonjour je souhaite ajouté +1 a la valeur de ma dernière ligne renseigné d'un tableau dans la feuille archivage du même classeur.
    quand j'ai fait avec l'enregistreur de macro il me renvoi pas la bonne ligne voici le code

    ActiveCell.FormulaR1C1 = "=archivage!R[5]c[-1] + 1"

    Merci de votre aide

  2. #2
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 509
    Par défaut
    Bonjour,
    Bonjour je souhaite ajouté +1 a la valeur de ma dernière ligne renseigné d'un tableau dans la feuille archivage du même classeur.
    Je ne comprends pas trop la demande. Si c'est pour incrémenté un index, je ne pense pas que cela soit la bonne solution. En effet si vous supprimez des lignes du tableau, bonjour les dégâts.
    Dites-nous en plus sur cet incrémentation.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chef de Labo
    Inscrit en
    Octobre 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de Labo
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2024
    Messages : 4
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Bonjour,

    Je ne comprends pas trop la demande. Si c'est pour incrémenté un index, je ne pense pas que cela soit la bonne solution. En effet si vous supprimez des lignes du tableau, bonjour les dégâts.
    Dites-nous en plus sur cet incrémentation.
    Bonjour merci de vôtre aide oui c'est pour incrémenté des numéros de bon de commande je souhaite une fois la commande enregistré qu'il me mets le prochain numéro de commande voici le code complet de ma macro
    Sub archivage()
    '
    ' archivage Macro
    ' enregistre la commande
    '

    '
    Range("B8").Select
    Selection.Copy
    Sheets("archivage").Select
    Range("Tableau5[[#Headers],[Numero de commande]]").Select
    Selection.End(xlDown).Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Selection.Offset(0, 1).Select
    Sheets("bon de commande").Select
    Range("B10").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("archivage").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Selection.Offset(0, 1).Select
    Sheets("bon de commande").Select
    Range("D10").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("archivage").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Selection.Offset(0, 1).Select
    Sheets("bon de commande").Select
    Range("D11").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("archivage").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Selection.Offset(0, 1).Select
    Sheets("bon de commande").Select
    Range("D12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("archivage").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Selection.Offset(0, 1).Select
    Sheets("bon de commande").Select
    Range("D13").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("archivage").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("bon de commande").Select
    Range("detail_commande").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("D13,D12,D10,B10,B8").Select
    Range("B8").Activate
    Selection.ClearContents
    Range("B8").Select
    ActiveCell.FormulaR1C1 = "=archivage!R[5]c[-1] + 1"
    Range("B10").Select
    End Sub

    merci

  4. #4
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 509
    Par défaut
    Re,
    Pour commencer il serait bien d'être plus explicite :
    Range("B8").Select
    Ceci fait référence à la feuille active, qui d'après ce que j'en déduit et la feuille des commandes. Donc si c'est cela il faut la nommer et utiliser son Nom
    Pièce jointe 661327
    Un exemple ici en Orange le CodeName utilisé dans l'environnement VBE et son nom en vert.
    Donc cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh_Commandes.Range("B8").Select
    J'ai aussi vu que vous utilisiez des tableaux structurés, exemple "Tableau5", vous pouvez utiliser leurs puissance. mais là aussi il faut leur donner un nom explicite. par exemple "vt_Commandes" ou bien t_Commandes, ou encore tab_Commandes.
    Pour ma part j'utilise "vr_" en préfixe pour les champs nommés, "vt_" en préfixe pour les tableaux.
    une fois nommés correctement vous pouvez utiliser leurs propriétés, méthodes, collections...
    Par exemple :
    ListRows est la collection de lignes du tableau. Vous pouvez ajouter très facilement une ligne à la collection. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim lstR As Excel.ListRow
        Set lstR = sh_Archivages.Range("vt_Archivages").ListObject.ListRows.Add ' // Ajout d'une ligne et affectation à une variable objet (lstR)
        With lstR
        ' // Changer  Colonne 1 par le nom de la 1 ère colonne.
        .Range(.Parent.ListColumns("Colonne 1").Index).Value = sh_Commandes.Range("B8").Value ' // Affectation des valeurs
        .Range(.Parent.ListColumns("Colonne 2").Index).Value = sh_Commandes.Range("B10").Value
        '...
        '...
        End With
    Vous pouvez ainsi remplir la ligne du tableau.
    Maintenant concernant l'Index max si la colonne se nomme "ID" par exemple, vous pouvez utiliser soit la fonction Max d'Excel, soit sauvegarder le numéro d'index sur une feuille de paramètres.
    Vous noterez que vous n'avez nul besoin de faire des Select, Copy, Paste. vous pouvez faire des affectations directes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh_Archivages.Range("D8").Value = sh_Commandes.Range("B10").Value

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chef de Labo
    Inscrit en
    Octobre 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de Labo
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2024
    Messages : 4
    Par défaut
    merci de vôtre aide, je débute avec les macros je n'ai pas encore les reflexe, mon problème est résolu grâce à vous avec la fonction max merci encore

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

Discussions similaires

  1. Problème pour insérer une formule dans un code VBA
    Par ti_mouton dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/07/2015, 18h02
  2. [MySQL] Probleme pour intérroger une base avec "%" (Tous)
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 03/04/2008, 13h03
  3. Probleme pour ecrire une formule
    Par Dereck07 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2007, 13h32
  4. probleme pour tracer une ligne avec OleExcel
    Par blondelle dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/08/2006, 19h10
  5. Copier une formule avec vba
    Par NAMORJOSE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2006, 00h12

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