Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU] VBA - Erreur 1004 - définition du RANGE (fonction perso)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

leakim

XLDnaute Occasionnel
Bonjour,
Avec le concours de jpb388 sur le fil https://www.excel-downloads.com/threads/resolu-msgbox-dans-une-boucle-selon-countif.20000471/, j'ai réussi à définir la plage de recherche.
Hors aujourd'hui, j'aimerai agrandir cette plage et j'ai le message "d'erreur 1004 définition de range"
Jpb38 m'a proposé une fonction perso qui fonctionne bien, sauf que j'arrive à la limite de cellule au delà de 200 colonnes... J'aurai besoin d'aller jusqu'à 262 colonnes.
Je pense qu'il faut modifier la fonction perso plutôt que de modifier le code qui utilise cette fonction?
Comment adapter la fonction perso pour ne plus être limité en nombre de cellule ?


Merci à vous,
Leakim

EDIT: J'ai retiré le code depuis l'envoi du fichier #5
 
Dernière édition:
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Bonjour.

Vous ne semblez pas connaître l'opérateur Mod on dirait. Il donne le reste de la division du terme avant par celui après.
VB:
Private Function PremiereColonne%(Cel As Range)
PremiereColonne = (Cel.Column - 3) Mod 10 + 3
End Function
(pour renvoyer la même chose que votre fonction, ce qui parait curieux, surtout en voyant la PremièreLigne. j'aurais mieux compris (Cel.Column - 3) \ 10 + 3. L'opérateur \ effectue une division entière)
 
Dernière édition:
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Bonjour, Merci Dranreb pour votre expertise. J'avoue que je m'en suis remis à jpb38 et que je n’avais pas prévue d'agrandir le fichier et sa réponse convenait exactement à ma demande initiale.
Il s'avère que ma demande change donc le code aussi (j'en suis pas surpris).
J'ai remis votre code dans mon fichier et il est tout à fait opérant. Il subsiste toujours un bug dans la fonction plage lorsque je dépasse 200 colonnes.
Comment adapter la fonction plage ?

Leakim
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

En essayant de rendre la plage plutôt que son adresse, ça irait mieux ?
VB:
Private Function Plage(ByVal Cel As Range) As Range
Dim Lg&, Col&, N&
Lg = PremiereLigne(Cel)
Col = PremiereColonne(Cel)
Set Plage = Range(Cells(Lg, Col), Cells(Lg + 17, Col))
For N = 10 To 250 Step 10
   Set Plage = Application.Union(Plage, Range(Cells(Lg, Col + N), Cells(Lg + 15, Col + N)))
   Next N
End Function
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Re, Merci Dranreb pour votre accompagnement.
Comme préconisé dans votre signature je joins le fichier.
L'idée c'est que lorsque l'on clique sur une cellule un userform s'ouvre et on a le choix de sélectionner les participants. Le code qui sollicite la fonction plage permet de tester dans la plage les doublons. Par exemple le test se fait sur tous les lundis de chaque atelier proposé.Cela fonctionne très bien avec le code précédent jusqu'à 180 colonnes avec le votre cela ne fonctionne plus, mais les lectures que j'ai faites indique bien un test en boucle comme dans votre code ???
Le bug n'est plus dans la fonction maintenant mais dans le code lorsqu'il y a "Set pl = Range(Plage(ActiveCell))" peut-être faut-il indiquer la feuille?

Merci encore,

Leakim

EDIT: A l'issu de la résolution j'ai retiré le fichier (j'avais laissé des noms...)
 
Dernière édition:
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Non, vous devriez maintenant pouvoir faire simplement Set pl = Plage(ActiveCell) puisque lorsqu'elle est utilisée, la fonction forme désormais directement une expression Range et non plus String.
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Re,
Ok pour la déclaration des variables mais là j'ai depuis le debut
Private Sub CommandButton_done_Click()
Dim y, d As String
Dim Col, lg0, col0 As Integer, NB As Integer
Dim pl As Range, c As Range

Alors je suis vraiment perdu !?!

Leakim
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Pourquoi ? Dim pl As Range c'est bon, puisque justement on peut comme ça y affecter par un Set le Range directement renvoyé par la fonction Plage !
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Re,
Oui, j'ai ôté la déclaration et c'est la même chose. Avec ou sans cela ne fonctionne pas...
Je sais pas quoi penser? Faut-il que je reprenne le code? la fonction?

Leakim
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Re,
Juste pour vous montrer le résultat de la plage avec les valeurs max.

Dans l'attente de vous relire,

Leakim
 

Pièces jointes

  • Captureplagemax.JPG
    26.3 KB · Affichages: 33
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Pourquoi vous ôtez une déclaration qui est bonne ?
Le résultat de la fonction Plage que je propose au poste #4 ne peut pas être le résultat que vous me montrez car elle ne renvoie plus un String mais un objet Range. En revanche quelque chose d'analogue pourrait être rendu par Plage(ActiveCell).Address tant que ça ne coince pas à cause de la longueur.
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

bonjour Leakim ,Danreb et tous

comme le dit Danreb a la place de Set pl = Range(Plage(ActiveCell)) met Set pl = Plage(ActiveCell)

le mod et l'union pas bête, cela simplifie drôlement la macro
cordialement
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Bonjour Dranreb, jpb388 et le forum.
Je vous remercie Dranreb pour les codes qui fonctionnent super bien.
Merci jpb388 pour la traduction de la rédaction.

Cordialement,
Leakim
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Bonjour Dranreb, jpb388 et le forum.
Je vous remercie Dranreb pour les codes qui fonctionnent super bien.
Merci jpb388 pour la traduction de la rédaction.

Cordialement,
Leakim
 
Re : VBA - Erreur 1004 - définition du RANGE (fonction perso)

Bonjour Dranreb, jpb388 et le forum.
Je vous remercie Dranreb pour les codes qui fonctionnent super bien.
Merci jpb388 pour la traduction de la rédaction.

Cordialement,
Leakim
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

J
Réponses
13
Affichages
1 K
N
Réponses
2
Affichages
2 K
nubed
N
P
Réponses
6
Affichages
2 K
P
K
Réponses
4
Affichages
3 K
krollette
K
I
Réponses
10
Affichages
3 K
insosama
I
V
Réponses
7
Affichages
8 K
VBeginner
V
P
Réponses
2
Affichages
2 K
Pasbleau
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…