VBA : Nombre de variables inconnu
Résolu
nabhalia
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
nabhalia Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
nabhalia Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je suis confronté à un épineux problème VBA.
Actuellement, j'ai ces données-ci (extraites d'un système impossible à modifier, bien sûr) :
PRODUIT 5 15
VIE 2 10
PRODUIT -2 -6
BLANC 7 9
Ma macro "compense" les données sur doublon (ici PRODUIT) et me donne le résultat suivant :
PRODUIT 3 9
VIE 2 10
PRODUIT Annulé
BLANC 7 9
Je précise qu'il m'est impossible de filtrer ou d'insérer des formules type SOMMEPROD, le fichier est bourré de lignes vides, de cellules fusionnées etc. La seule solution que j'ai trouvée, c'est de repérer les doublons, et de compenser les données correspondantes en définissant une variable pour chacune d'elle.
Mon problème devient beaucoup plus compliqué puisque maintenant, il s'agit de compenser deux, ou trois, ou quatre, ou cinq lignes, voire plus.
PRODUIT 8 16
VIE 2 10
PRODUIT 2 4
PRODUIT -3 -6
BLANC 7 9
PRODUIT 4 8
Dans l'idéal, ma macro donnera le résultat suivant :
PRODUIT 11 22
VIE 2 10
PRODUIT Annulé
PRODUIT Annulé
BLANC 7 9
PRODUIT Annulé
Le grande difficulté, c'est que je ne sais pas à l'avance combien de variables je vais devoir définir, puisque des "PRODUIT", je ne sais pas combien j'en aurais.
Je vous l'accorde, c'est ce qu'on appelle en language courant un véritable m...ier.
Dans l'absolu, la question reviendrait à : Est-il possible de définir autant de variables qu'il y a d'occurence "PRODUIT" (4 lignes produits = 4 variables crées) ?
Merci beaucoup pour votre aide,
Je suis confronté à un épineux problème VBA.
Actuellement, j'ai ces données-ci (extraites d'un système impossible à modifier, bien sûr) :
PRODUIT 5 15
VIE 2 10
PRODUIT -2 -6
BLANC 7 9
Ma macro "compense" les données sur doublon (ici PRODUIT) et me donne le résultat suivant :
PRODUIT 3 9
VIE 2 10
PRODUIT Annulé
BLANC 7 9
Je précise qu'il m'est impossible de filtrer ou d'insérer des formules type SOMMEPROD, le fichier est bourré de lignes vides, de cellules fusionnées etc. La seule solution que j'ai trouvée, c'est de repérer les doublons, et de compenser les données correspondantes en définissant une variable pour chacune d'elle.
Mon problème devient beaucoup plus compliqué puisque maintenant, il s'agit de compenser deux, ou trois, ou quatre, ou cinq lignes, voire plus.
PRODUIT 8 16
VIE 2 10
PRODUIT 2 4
PRODUIT -3 -6
BLANC 7 9
PRODUIT 4 8
Dans l'idéal, ma macro donnera le résultat suivant :
PRODUIT 11 22
VIE 2 10
PRODUIT Annulé
PRODUIT Annulé
BLANC 7 9
PRODUIT Annulé
Le grande difficulté, c'est que je ne sais pas à l'avance combien de variables je vais devoir définir, puisque des "PRODUIT", je ne sais pas combien j'en aurais.
Je vous l'accorde, c'est ce qu'on appelle en language courant un véritable m...ier.
Dans l'absolu, la question reviendrait à : Est-il possible de définir autant de variables qu'il y a d'occurence "PRODUIT" (4 lignes produits = 4 variables crées) ?
Merci beaucoup pour votre aide,
A voir également:
- VBA : Nombre de variables inconnu
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
5 réponses
Bonjour,
Pas de panique !
faut il conserver "produit annulé" ?
pour essayer d'^tre efficace:
mettre un extrait du classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse
Pas de panique !
faut il conserver "produit annulé" ?
pour essayer d'^tre efficace:
mettre un extrait du classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse
Bonjour et merci pour la réponse.
Voici le lien : https://www.cjoint.com/?DCgkRFLROrt
En rouge, j'ai noté les informations que la macro devra ajouter.
Une boucle permet de recommencer à chaque zone, de vérifier s'il y a un PRODUIT (ou autre) en double ou en triple, d'additionner les chiffres à côté du plus grand montant, et d'annuler à côté des autres.
Vraiment pas simple...
Merci pour votre aide.
Voici le lien : https://www.cjoint.com/?DCgkRFLROrt
En rouge, j'ai noté les informations que la macro devra ajouter.
Une boucle permet de recommencer à chaque zone, de vérifier s'il y a un PRODUIT (ou autre) en double ou en triple, d'additionner les chiffres à côté du plus grand montant, et d'annuler à côté des autres.
Vraiment pas simple...
Merci pour votre aide.
Ok, merci; c'est clair
combien de Zones à traiter maxi (pour orienter vers une solution ou une autre mais toujours en VBA)
suis absent cet aprem: je regarderai ce soir ou demain matin...
combien de Zones à traiter maxi (pour orienter vers une solution ou une autre mais toujours en VBA)
suis absent cet aprem: je regarderai ce soir ou demain matin...
Le nombre de zones varie chaque jour, de 1 à... une centaine.
Hier, 79, par exemple.
Chaque zone peut contenir entre 2 et 22 lignes (donc 11 produits max).
Pour ma part, j'étais parti sur des variables à définir, mais effectivement, s'il existe une autre solution je suis preneur.
Un grand merci.
Hier, 79, par exemple.
Chaque zone peut contenir entre 2 et 22 lignes (donc 11 produits max).
Pour ma part, j'étais parti sur des variables à définir, mais effectivement, s'il existe une autre solution je suis preneur.
Un grand merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
@michel cordiales salutations, je me suis lancé dans le cambouis
J'ai fait une tentative (macro), à tester bien sûr
Ctrl+m pour exécuter la macro
https://www.cjoint.com/?DCgqmsXX90O
Bonne suite
@michel cordiales salutations, je me suis lancé dans le cambouis
J'ai fait une tentative (macro), à tester bien sûr
Ctrl+m pour exécuter la macro
https://www.cjoint.com/?DCgqmsXX90O
Bonne suite
Une autre qui n'affiche plus les occurrences simples comme dans le modèle
https://www.cjoint.com/?3CgqZmN0umh
https://www.cjoint.com/?3CgqZmN0umh
Bonjour CCM81,
OK, c'est magique l'objet "Dictionary", pas Vrai ?;o)
juste 2 petits trucs pour le purisme
tu n'as pas besoin de
Set dico = Nothing (car dico est déclaré en variable locale: il faudrait utiliser cette ligne si on avait écrit au départ set dico=new.dictionary)
ni de
Application.ScreenUpdating = True
mais ça n'emp^che pas de fonctionner :o)
OK, c'est magique l'objet "Dictionary", pas Vrai ?;o)
juste 2 petits trucs pour le purisme
tu n'as pas besoin de
Set dico = Nothing (car dico est déclaré en variable locale: il faudrait utiliser cette ligne si on avait écrit au départ set dico=new.dictionary)
ni de
Application.ScreenUpdating = True
mais ça n'emp^che pas de fonctionner :o)