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

Macro qui plante sur; For Each...

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 !

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Je souhaiterais avoir vos explications au sujet de cette macro qui fonctionne parfaitement dans ce fichier, mais qui plante dans un autre classeur...

Merci pour votre aide.

Bien à vous,
Christian
 

Pièces jointes

Re : Macro qui plante sur; For Each...

Bonjour christian,

tu pourrais au moins nous dire la ligne sur laquelle la macro plante

Si c'est ici:
Code:
Sub raz()

    Sheets("devis").Range("A2:A10").ClearContents
    
End Sub
c'est sans doute que ton autre classeur ne contient pas de feuille nommée "devis"

à+
Philippe
 
Re : Macro qui plante sur; For Each...

Bonjour Christian, re Philippe 🙂,
Je pencherai plutot pour l'absence de zone nommée Liste dans le classeur en défaut.
A moins que "c" ait été déclarée public dans un module autrement que As Range
Peut être...
Cordialement
 
Dernière édition:
Re : Macro qui plante sur; For Each...

Bonjour le fil,

C'est une première.

On nous montre le classeur "qui marche" et on veut savoir pourquoi ça ne marche pas pas dans le classeur qu'on ne montre pas...

Secret Défense peut-être 😕

A+
 
Re : Macro qui plante sur; For Each...

Re,
Bonjour Christian, re Philippe 🙂,
Je pencherai plutot pour l'absence de zone nommée Liste dans le classeur en défaut.
A moins que "c" est été déclarée public dans un module autrement que As Range
Peut être...
Cordialement
Tu as raison Efgé, j'ai (une fois de plus) été trop rapide en lisant la question

à+
Philippe
 
Re : Macro qui plante sur; For Each...

Re, le forum, bonjour à tous,

Merci pour votre aide.

J'indique dans le fichier joint sur quel ligne, plante la macro.
Je ne peux pas joindre le classeur qui ne fonctionne pas, qui est vraiment trop lourd.
J'ai bien une zonne nommée Liste.

Je crois que c'est Efgé qui avec sa remarque ;
"A moins que "c" est été déclarée public dans un module autrement que As Range"
doit être dans le vrai.

Mais je suis assez nul en VBA...lol

Pourriez-vous me dire comment manoeuvrer.

Bien à vous,
Christian
 
Re : Macro qui plante sur; For Each...

Re
Pour vérifier la présence de la variable c:
Tu commence par vérifier qu'en haut de la macro qui plante il n'y a pas Dim c As quelque chose. Si ce quelquechose n'est pas Range tu le supprime pour avoir Dim c
Si ce n'est pas ça:
Tu tape Ctrl + F
Dans la zon rechercher tu tape "Public" sans les guillemets
Tu coche la case Projet en cours
tu fait suivant jusqu'a temps que tu "tombe dessus"
Cordialement

EDIt : Plus simple, moins long, moins riqué: remplace for each c par for each celul (je ne pense pas que la variable celul existe déja)
Cordialement
 
Dernière édition:
Re : Macro qui plante sur; For Each...

Re, le forum, Efgé,

Merci beaucoup, Efgé, pour ton aide.

J'ai suivi tes recommandations et ça a pointé sur cette macro contenu dans mon fichier :
Option Explicit
Public C As Integer ' position colonne
Public d As Integer ' décalage
Public i As Integer ' indice
Public ic As Integer ' index du combobox
Public K As Integer ' position colonne
Public L As Long ' position ligne
Public p As Integer ' position texte recherché
Public pos As Long ' ligne départ
Public spl As Long ' position index départ
Public t As Integer ' n° zone valeur
Public Sub modif() ' procédure de récupération des données antérieures
With UserForm1 ' identification de l'objet concerné
C = Range("basedenrée").Column ' position de la 1ère colonne denrée
L = .ComboBox1.ListIndex + Range("baseplat").Row + 1 ' ligne du plat
d = 0: t = 1 ' initialisation variables décalage et n° textbox
For K = 2 To 16 ' traitement des 15 denrées
If Sheets("CartePlats").Cells(L, C).Offset(0, d).Value <> "" Then
' la denrée était présente
For i = 0 To .Controls("ComboBox" & K).ListCount
' recherche et position de l'index du combobox
If Sheets("CartePlats").Cells(L, C).Offset(0, d).Value _
= .Controls("ComboBox" & K).List(i) Then
.Controls("ComboBox" & K).ListIndex = i
Exit For
End If
Next i
Else
' la denrée était absente
.Controls("ComboBox" & K).ListIndex = -1
End If
For i = 3 To 6 ' traitement des textbox associées
.Controls("textBox" & t).Value = _
Sheets("CartePlats").Cells(L, C).Offset(0, d + i).Value
t = t + 1
Next i
d = d + 7
Next K
End With
End Sub

Peux-tu me dire...
Bien à toi,
Christian
 
Re : Macro qui plante sur; For Each...

Re
Essau ceci:
VB:
Private Sub TextBox1_Change()
Dim celul As Range
   Me.ListBox1.Clear
   For Each celul In [liste]
     If UCase(celul) Like UCase(Me.TextBox1) & "*" Then Me.ListBox1.AddItem celul
  Next celul
End Sub
.
Et
VB:
Private Sub TextBox2_Change()
Dim celul As Range
   Me.ListBox1.Clear
   For Each celul In [liste]
     If UCase(celul) Like "*" & UCase(Me.TextBox2) & "*" Then Me.ListBox1.AddItem celul
  Next celul
.

Cordialement
 
Dernière édition:
- 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

Réponses
7
Affichages
538
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…