VBA If ne s'éxecute pas sur la bonne feuille
Résolu
yohannj
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
yohannj Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
yohannj Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Mon code commence par:
Sub ClasseEtRangeDonnées()
Call Prendre_items
Voici la début de la fonction Prendre_items:
Public Function Prendre_items()
For i = 2 To 2699
If Range("H" & i) = "N" Then
Mon classeur contient 3 feuilles qui sont "links", "N" et "M". Le problème est que la ligne " If Range("H" & i) = "N" Then " vérifie la condition sur la page "N" alors que j'aimerais que la vérification se fasse sur la page "links". Je pensais que " If Range("links!H" & i) = "N" Then " allait résoudre le soucis mais j'ai un code erreur. J'ai aussi tenté ce que j'ai vu et qui ressemble à " Sheets("links").Activate " mais le problème persiste.
Si besoin du doc excel, le voici:
https://www.cjoint.com/?3HpwsE3AiII
J'utilise excel 2010.
Auriez vous une solution svp?
Merci d'avance pour votre réponse.
Mon code commence par:
Sub ClasseEtRangeDonnées()
Call Prendre_items
Voici la début de la fonction Prendre_items:
Public Function Prendre_items()
For i = 2 To 2699
If Range("H" & i) = "N" Then
Mon classeur contient 3 feuilles qui sont "links", "N" et "M". Le problème est que la ligne " If Range("H" & i) = "N" Then " vérifie la condition sur la page "N" alors que j'aimerais que la vérification se fasse sur la page "links". Je pensais que " If Range("links!H" & i) = "N" Then " allait résoudre le soucis mais j'ai un code erreur. J'ai aussi tenté ce que j'ai vu et qui ressemble à " Sheets("links").Activate " mais le problème persiste.
Si besoin du doc excel, le voici:
https://www.cjoint.com/?3HpwsE3AiII
J'utilise excel 2010.
Auriez vous une solution svp?
Merci d'avance pour votre réponse.
A voir également:
- VBA If ne s'éxecute pas sur la bonne feuille
- Bruler feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Comment supprimer une feuille sur word - Guide
- Comment imprimer en a5 sur une feuille a4 - Guide
- Verrouiller cellule excel sans verrouiller la feuille - Guide
8 réponses
Bonjour,
Et as-tu bien saisi le rôle et le but d'une fonction ?
J'ai l'impresssion quelles sont utilisées à tort et à travers...
Une fonction, on lui passe 1 ou plusieurs paramètres et elle retourne une valeur.
A aucun moment tu ne leur passes de paramètres, à aucun moment tu leur fais retourner une valeur...
De plus elles doivent être obligatoirement déclarées dans un module.
J'ai l'impression que tu n'as besoin que de sub...
Eric
Et as-tu bien saisi le rôle et le but d'une fonction ?
J'ai l'impresssion quelles sont utilisées à tort et à travers...
Une fonction, on lui passe 1 ou plusieurs paramètres et elle retourne une valeur.
A aucun moment tu ne leur passes de paramètres, à aucun moment tu leur fais retourner une valeur...
De plus elles doivent être obligatoirement déclarées dans un module.
J'ai l'impression que tu n'as besoin que de sub...
Eric
Bonjour,
Vous remplacez la ligne :
If Range("H" & i) = "N" Then
Par celle-ci:
If Sheets("links").Range("H" & i) = "N" Then
Vous remplacez la ligne :
If Range("H" & i) = "N" Then
Par celle-ci:
If Sheets("links").Range("H" & i) = "N" Then
Bonjour,
Depuis où vous déclenchez vous la procédure ?
Au passage, à quoi vous sert : Public Function RAZ()
Salutations.
Le Pingou
Depuis où vous déclenchez vous la procédure ?
Au passage, à quoi vous sert : Public Function RAZ()
Salutations.
Le Pingou
Je lance la procédure depuis VBA avec le bouton "Exécuter la macro". (Et accessoirement le "Pas à pas détailler" pour déterminer où était le soucis)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Merci.
Donc, selon votre réponse la procédure prendra comme référence la feuille active du classeur et dans ce cas on ne sait pas ce que la procédure doit exactement réaliser.... !
Concernant les fonctions, je rejoins les propos d'eriiic (salutations).
Désolé, pas possible de faire plus.
Merci.
Donc, selon votre réponse la procédure prendra comme référence la feuille active du classeur et dans ce cas on ne sait pas ce que la procédure doit exactement réaliser.... !
Concernant les fonctions, je rejoins les propos d'eriiic (salutations).
Désolé, pas possible de faire plus.
"Au passage, à quoi vous sert : Public Function RAZ()"
Elle me permet de limiter le nombre de variable. J'utilise les même 2 fois pour des actions différentes. ça m'a permis d'éviter un code erreur qui me disait que j'utilisais trop de variables.
"Et as-tu bien saisi le rôle et le but d'une fonction ?"
Je n'y ai pas réfléchie du tout ici. En le lisant je me dit que c'est évident vu que le seule endroit où j'utilise des fonctions habituellement est lié au maths en utilisant le logiciel Maple.
Au début j'avais tout mis dans le sub mais j'avais un code erreur me disant qu'il y avait trop de choses dedans. J'ai regardé sur internet et j'ai vu qu'on pouvait contourner le problème en faisant des fonctions. J'ai appliquer sans réellement réfléchir et sans chercher une manière de faire un sous programme.
Je n'ai pas non plus saisi le rôle et le but du sub. J'ai de très faible connaissance en basic et quick basic et j'ai essayé de me débrouiller avec ce que je connaissais.... mais ça n'as vraiment pas l'air de suffire.
"la procédure prendra comme référence la feuille active du classeur"
En me plaçant sur la feuille "links" ou en utilisant " Sheets("links").Activate " (ou WorkSheets("links").Activate ou avec Select au lieu de Activate), ça continue de vérifier la condition sur la feuille "N"
Désolé, c'est ma première utilisation de VBA et vu que je ne pense pas l'utiliser régulièrement avant 1 an et je n'ai pas chercher à me renseigner sur son fonctionnement avant de me lancer.
Elle me permet de limiter le nombre de variable. J'utilise les même 2 fois pour des actions différentes. ça m'a permis d'éviter un code erreur qui me disait que j'utilisais trop de variables.
"Et as-tu bien saisi le rôle et le but d'une fonction ?"
Je n'y ai pas réfléchie du tout ici. En le lisant je me dit que c'est évident vu que le seule endroit où j'utilise des fonctions habituellement est lié au maths en utilisant le logiciel Maple.
Au début j'avais tout mis dans le sub mais j'avais un code erreur me disant qu'il y avait trop de choses dedans. J'ai regardé sur internet et j'ai vu qu'on pouvait contourner le problème en faisant des fonctions. J'ai appliquer sans réellement réfléchir et sans chercher une manière de faire un sous programme.
Je n'ai pas non plus saisi le rôle et le but du sub. J'ai de très faible connaissance en basic et quick basic et j'ai essayé de me débrouiller avec ce que je connaissais.... mais ça n'as vraiment pas l'air de suffire.
"la procédure prendra comme référence la feuille active du classeur"
En me plaçant sur la feuille "links" ou en utilisant " Sheets("links").Activate " (ou WorkSheets("links").Activate ou avec Select au lieu de Activate), ça continue de vérifier la condition sur la feuille "N"
Désolé, c'est ma première utilisation de VBA et vu que je ne pense pas l'utiliser régulièrement avant 1 an et je n'ai pas chercher à me renseigner sur son fonctionnement avant de me lancer.
Bonjour,
Merci pour les informations.
Toutefois elle n'explique pas depuis où vous lancer votre procédure et ce que vous voulez réaliser ... !
Je vais regarder votre fichier et essayer de vous trouver une solution pour [vérifie la condition sur la page "links"].
Merci pour les informations.
Toutefois elle n'explique pas depuis où vous lancer votre procédure et ce que vous voulez réaliser ... !
Je vais regarder votre fichier et essayer de vous trouver une solution pour [vérifie la condition sur la page "links"].
Merci beaucoup!
J'ai aussi vu 3 autres erreurs que j'avais fais et j'ai raccourcie le code (surtout en enlevant toutes les variables) qui ne tient plus que sur 60 lignes et il n'y a plus de fonctions.
C'est bien plus sain et ça limite bien le temps de calcul qui reste important.
Encore une fois, merci à vous deux!
J'ai aussi vu 3 autres erreurs que j'avais fais et j'ai raccourcie le code (surtout en enlevant toutes les variables) qui ne tient plus que sur 60 lignes et il n'y a plus de fonctions.
C'est bien plus sain et ça limite bien le temps de calcul qui reste important.
Encore une fois, merci à vous deux!