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 :

Étirer un tableau jusqu’à ce qu'une cellule soit supérieure ou égale à une cellule fixe [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 26
    Par défaut Étirer un tableau jusqu’à ce qu'une cellule soit supérieure ou égale à une cellule fixe
    Bonjour à tous,

    J'ai a nouveau besoin de votre aide

    Je souhaite étirer un tableau dans lequel je peux planifier les mes réceptions à la semaine (première semaine de réception en colonne F et total cumulé en ligne 40) et les confronter au besoin total (cellule B1)

    Pour le moment j'ai une solution fonctionnelle mais pas optimale du tout :
    Je calcule, via une valeur cible, en combien de semaine je vais solder mon besoin en fonction de la capacité du fournisseur et j'étends mon tableau en fonction de ce nombre de semaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Plannif expeditions
    Range("F39:F43").Select 'Séléction du de la première colonne du tableau de plannification
    Selection.AutoFill Destination:=Range(Cells(39, 6), Cells(43, 6 + Cells(2, 2).Value - 1)), Type:=xlFillDefault 'Etirement automatique selon le nombre de semaine de production
    De ligne 39 a 43 c'est mon tableau en cellule B c'est le nombre de semaine défini par la valeur cible

    Je pense que ce serait encore mieux de réaliser une boucle qui sélectionne la dernière colonne du tableau et vérifie si la cellule ligne 40 (total cumulé) est inférieur ou supérieur a la cellule B2 (besoin total)
    Si inférieur alors on étire le tableau d'une colonne
    puis on fait la même vérification sur la nouvelle colonne
    Si supérieur alors on ne fait rien

    j'imagine que l'on peut faire une boucle : étirer le tableau jusqu’à ce que la cellule ligne 40 soit supérieur ou égale a B2

    Pouvez vous m'aider ?


    Un grand merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Bonjour,
    tu peux effectivement faire une boucle, comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do Until Range("F40").value >= Range("B2").value
    'ton code d'autofill, ligne par ligne
    ligne = ligne +1
    Loop
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 26
    Par défaut
    Bonjour Jea-Phillipe,

    en l’occurrence je cherche a étirer à l'horizontale (désolé, je suis sur cet outil depuis un mois donc ça me paraissait évident :/ )
    le problème c'est que le total cumulé n'est pas figé :

    Je compare F40 a B2 => F40<B2 donc j'étire (+1 colonne) G40 < B2 j'étire..... n40>B2 je ne bouge plus
    C'est possible de faire ressortir cette notion de variabilité ou faut-il passer par une cellule figée qui reprend la valeur max de la ligne 40

    Par exemple B3 = Max(40:40)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do Until Range("B3").value >= Range("B2").value
    Colonne = colonne+1
    loop

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Ok,

    l'autofill, je l'utilise 99% tu temps en ligne, et 1% du temps en colonne

    Ca ne change pas grand chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim C as Range
    Set C = Range("F40")
     
    Do Until C.Value = Range("B2").value
    'etirage
    Set C = C.Offset(0,1)
    Loop
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2016
    Messages : 26
    Par défaut
    J.P,

    J'ai aussi cette habitude mais dans le cas présent c'est plus visuel

    étant donné que je prends plusieurs lignes dans mon range ça me donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim C as Range, D as Range
    Set C = Range("F40")
    Set D = Range("F39:F43")
    Do Until C.Value = Range("B2").value
    'etirage
    Set D = D.Offset(0,1)
    Loop
    et la si j'ai besoin d'avoir 10 colonnes pour atteindre ma valeur, ca va bien m’étirer mon tableau 10 fois ?

    Bon déjà en l'état ça coince,

    J'ai un debogage sur le ligne

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Faut dire que tu changes la variable C en D, fatalement....

    quand je mets le commentaire 'etirage, c'est ta ligne avec autofill qu'il faut que tu ecrives hein....

    Je te laisse reflechir a ce qui pose probleme
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  2. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  3. Réponses: 3
    Dernier message: 25/11/2008, 11h15
  4. Réponses: 2
    Dernier message: 22/04/2007, 21h57
  5. espace vide entre une image et le bas d'une cellule d'un tableau
    Par danyboy85 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 18/10/2006, 15h29

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