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 :

VBA : sélectionner une plage de manière variable


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
    Administrateur de base de données
    Inscrit en
    Mars 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2022
    Messages : 15
    Par défaut VBA : sélectionner une plage de manière variable
    Bonjour ! Une nouvelle journée, un nouveau problème !

    Rentrons dans le vif du sujet, je ne trouve pas la solution sur internet alors je me tourne vers vous

    Ma situation
    Je travail dans un festival et j'ai un fichier avec une liste d'email. Il faut que je sache le nombre de place à envoyer par email, pour cela j'ai une formule (=NB.SI($B$2:$B$74;B2)).
    Avec B2 la ligne de la première adresse mail et B74 la dernière ligne avec une adresse mail (qui est donc variable en fonction du fichier que l'on m'envoie)
    Normalement je modifie manuellement la valeur de la dernière ligne mais j'aimerai automatiser cette partie.

    Mon problème
    En gros, avec une formule en VBA je récupère le nombre de ligne non vide d'une colonne de mon fichier (351)

    Je rentre le résultat de la formule dans une TextBox et j'aimerai appliquer la formule (cf.=NB.SI($B$2:$B$74;B2)) sur une plage.

    Ce que j'essaie de faire c'est d'appliquer sur la plage "C2:Colonne C + valeur du TextBox" = NB.SI($B$2:$B$valeur du TextBox;B2) afin que mon code soit utilisable peu importe la longueur du fichier à traiter.

    Seulement cela ne fonctionne pas (j'ai compris que ma syntaxe est très mauvaise mais je ne trouve aucune trace de quelqu'un qui aurait voulu faire pareil que moi sur internet)

    J'ai aussi noté comme problème le fait que je ne peux pas utiliser le ";" dans la formule NB.SI($B$2:$B$74;B2).

    Merci de votre attention

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Inutile de passer par VBA.
    Dans un premier temps, tu peux compter le nombre de cellules vides ou non vides avec la fonction NB.SI
    Et après pour la rendre dynamique, tu peux utiliser la fonction DECALER

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2022
    Messages : 15
    Par défaut
    Je sais que VBA n'est pas nécessaire pour ce problème, j'ai du le faire dans le rush et je m'en suis sorti sans utiliser VBA
    Mais dans le cadre de mes études, je dois utiliser VBA et j'aimerai laisser un moyen plus simple à l'entreprise d'effectuer cette tache, voici donc pourquoi j'essaie de le faire de cette manière, afin qu'ils aient un Userform qui s'ouvre, afin d'effectuer toute la démarche automatiquement (sur des fichiers de plusieurs milliers de lignes, c'est très long)

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Citation Envoyé par Arthurotop Voir le message
    ... j'aimerai laisser un moyen plus simple à l'entreprise d'effectuer cette tache...
    Je n'ai peut-être pas saisie toute la complexité du problème, mais quoi de plus simple qu'une formule ?
    Je veux bien un peu plus de matière pour mieux comprendre, parce que là j'ai l'impression qu'on essaye de construire un viaduc pour traverser une rivière, là où deux planches suffiraient

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2022
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2022
    Messages : 15
    Par défaut
    Haha j'aime bien l'image et c'est totalement le cas, fondamentalement j'étais dans la situation : "colonne 1 = nom et prénom" ; "colonne 2 = email" et je crée une "colonne 3 = quantity" afin de savoir combien de place il faut envoyer aux festivaliers.

    Partie 1
    Dans cette colonne 3 j'applique la formule =NB.SI($B$2:$B$74;B2) en modifiant "$B$74" en remplaçant 74 par le nombre de client (spoiler, c'est à chaque fois 1 la quantité qu'il faut envoyer)

    Partie 2
    Une fois cela fait, je dois séparer le nom et le prénom (Données => convertir => délimiteur => etc) puis regrouper tous les seconds prénom dans une case afin d'avoir une colonne nom et une colonne prénom (grâce à la fonction concat(A1; " "; A2; " "; etc))

    Exemple : Arthur de la Vilette => Arthur ; De ; La ; Vilette => Arthur ; De la vilette (afin d'avoir uniquement deux colonnes pour nom et prénom)

    La le travail est terminé (on est d'accord, c'est hyper simple). Mais dans le cadre de mes études pour remplir mon rapport de stage, j'aimerai automatisé ce travail donc :

    Partie 1- Compter automatiquement le nombre de client (ligne) et le rentrer dans une textbox (afin de pouvoir vérifier que le compte est bon)
    Partie 2- Utiliser le contenu de la textbox dans la formule qui m'est imposé (pour que ce soit dynamique et que peu importe le fichier, cela se fasse automatiquement) sans tenir compte du fait que la formule n'est pas acceptée par VBA, il doit y avoir des équivalents pour chaque caractère non accepté par VBA (comme le ; avant le B2 à la fin de la formule)
    Partie 3- Séparer les noms/prénoms et les faires tenir dans deux colonnes

    Actuellement je suis bloqué à la partie 2

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bon alors si on part sur une construction de viaduc, quand tu as besoin d'écrire une formule en VBA, le plus simple est d'écrire ta formule dans Excel, puis de passer par l'enregistreur de macro.

    Ce qui te donne le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C2").FormulaR1C1 = "=COUNTIF(R2C2:R74C2,RC[-1])"
    Et après, tu n'as plus qu'à l'adapter avec ta textbox, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C2").FormulaR1C1 = "=COUNTIF(R2C2:R" & TextBox1.Value & "C2,RC[-1])"
    Attention, si la textbox ne contient pas un nombre, le pont s'écroule !

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

Discussions similaires

  1. [XL-2007] Étendre une formule à l'aide de VBA sur une plage variable
    Par cyril7751 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/07/2012, 17h23
  2. Sélectionner une plage de cellules variable
    Par LeRogerTroutman dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2009, 23h43
  3. Sélectionner une plage de cellules variables
    Par thierry_b dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/06/2009, 12h42
  4. Sélectionner une plage de cellules variables pour faire un graphique?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/11/2007, 19h06
  5. Réponses: 2
    Dernier message: 27/09/2006, 20h41

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