Incompatibilité - erreur 13

Bonjour, j'ai un soucis avec mon code. Il s'arrête après avoir dis oui a ma première MsgBox. je pense donc que j'ai mal déclarer mes variables.

Une aide ?

Sub CréationDeColis()

Dim a As Integer

Dim Résultat As String

For a = 8 To 10
MsgBox Cells(a, 2).Value, vbYesNo + vbInformation

If Résultat = vbYes Then
MsgBox "cool"
End If

If Résultat = vbYes Then
MsgBox "pas cool"
End If

Next a
End Sub

Bonjour, il faudrait déjà que l'on comprenne ce que vous testez ?

If Résultat = vbYes Then ?? Pas possible de tester : résultat car il n'est pas calculé avant.

ah oui ok j'ai compris, je dois le placer avant sur ma MsgBox ?

dans le style : Résultat = Msgbox...

Bonjour,

cette fois-ci mon code ne se lance pas du tout...

Les deux parties (Do Until et For Next) fonctionne bien séparément mais lorsque je combine les deux pour automatiser le process c'est la que tout plante et la macro ne se lance pas.
Le truc bizarre c'est que je n'ai pas de message d'erreur donc la macro doit se lancer mais rien ne se passe.

Un conseil ?

Sub CréationDeColis()

Dim Nbdeligne As Integer

Nbdeligne = 8
b = 0
Do Until Cells(Nbdeligne, 4) = "-"
Nbdeligne = Nbdeligne + 1
b = b + 1
Loop

Dim a As Integer
Dim Résultat As String

For a = 8 To b
Résultat = MsgBox(Cells(a, 2).Value, vbYesNo + vbInformation)

If Résultat = vbYes Then

Else
UserForm1.Show

End If

Next a
End Sub

Re,

Un fichier exemple avec ce que vous souhaitez faire serait plus utile pour comprendre que votre code.

Vous pouvez mettre autant de variables dans votre code si nous on ne sait pas à quoi elle servent difficile de vous aider.

Bonjour…

MsgBox sans parenthèses délivre un message !

La fonction MsgBox (…) délivre une variable qui, selon elle, entraîne une action prévue !

Sub CréationDeColis()
 Dim a As Byte
 For a = 8 To 10
  If MsgBox(Cells(a, 2).Value, 4, "") = 6 Then 'pour un test
    MsgBox "c'est oui", 4, "maintenant…" '4 pour VbYesNo
  Else
    MsgBox "c'est non", 4, "maintenant…"
  End If
 Next
End Sub

merci de ton explication claire mais le soucis ne vient pas de là.

la partie que tu as modifier et l'autre fonctionne très bien toute seul dans deux Sub différent mais dès que je les combine ca ne marche plus alors que je voudrais que le résultat de la première boucle influence celui de la deuxième...

Comment je pourrais faire ?

PS : Je transmets un exemple après manger.

Voici le fichier exemple qui est presque un copier collé de ce que j'ai (sans les données sensible).

Le "MACRO combiné" est une association des deux autres macro

les boutons permette de voir le résultat du bouton Macro1 que je veux exploité dans le bouton Macro 2 et la macro deux permet de valider plus tard les résultat en gros.

6classeur1.xlsm (28.81 Ko)

Avec le fichier c'est mieux...

Ok donc Si je comprends bien votre macro 1 est une boucle pour trouver le nombre de ligne que vous utiliserai en macro 2 ?

Remplacez msgbox "Vous avez répondu oui" par l'action que vous soujaitez exécuter quand l'utilisateur répond "oui"

Sub CréationDeColis()
Dim Nbdeligne As Integer
Nbdeligne = Worksheets("Feuil1").Range("B65536").End(xlUp).Row - 1
Dim a As Integer

For a = 8 To Nbdeligne
If MsgBox(Cells(a, 2).Value, vbYesNo + vbInformation) <> vbNo Then

' Action à définir quand l'utilisateur répond oui
MsgBox "vous avez dit oui"

Else
UserForm1.Show

End If

Next a
End Sub
9classeur1.xlsm (29.91 Ko)

Oui c'est ca exact ! je dois prendre la valeur de la boucle pour faire la deuxième macro.

Votre code marche très bien, je n'avais pas penser à le faire comme ca par contre il faut cliquer 65000 fois... Je voudrais que il n'y ai que le nombre de ligne rempli qui soit déclarer (sans la ligne TOTAL)

Non le nombre de ligne trouvé est bien de 10 dans le fichier test.

Nbdeligne = Worksheets("Feuil1").Range("B65536").End(xlUp).Row - 1

Si vous avez 65000 réponses à donner c'est qu'il y a des cellules non vides à la fin de votre fichier original ?

espace ou - ou n'importe quel info se trouvant dans les lignes 65000

Bonjour à tous,

Et si jamais vous aviez vraiment 65000 lignes remplies, il faudrait peut-être songer à une autre solution qu'une boucle de msgbox (pas terrible en général). Il s'agirait peut-être de mieux penser le code de l'userform par exemple, en intégrant un spinbutton éventuellement.

Cdlt,

Dans le code que j'avais précédemment, la macro permettait de calculer le nombre exact de ligne que je voulais. Donc peut importe si j'avais 1, 4 ou même 65 000 lignes, la macro me donne ce chiffre.

mais c'est une fois que je l'intègre avec une autre macro, à qui le nombre trouver précédemment intéresse, que ca ne marche plus.

Comment pensais-tu intégrer un USF ? Je rappelle que des valeurs doivent être calculé et choisi. A ce jour, les MsgBox me donne ce résultat mais qui n'ai pas dynamique car ne fonctionne que pour un nombre limiter de ligne (entouré en rouge). C'est cette valeur entouré en rouge que voudrais être variable.

image image

Ce que je voulais dire, ne connaissant pas vraiment les objectifs, c'est qu'en principe, on fait des macros pour automatiser tout un processus. Lorsque ce n'est "pas possible", notamment parce que le processus intègre un arbitrage humain, il faut penser le code autour de cet arbitrage, décisif dans l'optimisation du processus.

En l'occurrence, vous avez un Userform qui doit probablement remonter des infos issues de la feuille. Vous n'allez pas faire apparaitre X msgbox pour dire oui ou non et tantôt ouvrir l'userform. Il faut repenser l'userform pour tout faire dessus directement. Par exemple, un spinbutton (ou autre) permet de faire un défilement. Une listbox permet de traiter plusieurs lignes simultanément. Je n'ai pas vu votre fichier mais je dirais que ce serait vers cet objectif que vous devriez vous dirigez.

Parce que le jour où vous aurez une boucle de 8 à 500, ça s'imposera je pense.

Cdlt,

d'accord oui je comprend ce que vous voulez dire et je n'y avais pas penser. Même si le nombre ne devrait pas dépasser les 10 c'est vrai qu'un USF avec toute les lignes rassembler serait surement plus simple mais comment en créer un qui faire voir les infos que j'ai des mes MsgBox et qui changent en fonction du nombre de ligne ?

Je vais me renseigner sur les listBox que je ne connais pas.

Bonjour,

Comment ? Justement avec une listbox. Dans celle-ci, vous pouvez afficher les lignes à traiter. La listbox peut contenir plusieurs colonnes et la sélection multiple est possible. Donc, je dirais (toujours sans connaitre réellement la structure du fichier) que vous pourriez alimenter votre listbox des lignes à traiter, sélectionner celles à valider puis appuyer sur un bouton pour acter la validation.

Sinon, il est possible de charger dans des labels ou des textbox les infos pour une seule ligne. A l'aide d'un spinbutton (bouton de défilement), vous pouvez changer les informations en passant à la ligne suivante ou précédente, jusqu'à ce qu'elles soient toutes traitées.

Ca offre une meilleure visibilité (puisqu'on gère une opération à la fois) mais c'est un peu moins confortable à l'utilisation, assez similaire au fonctionnement avec les msgbox en boucle.

Il est également de coupler les 2.

Cdlt,

D'accord je comprend mieux ce que je dois faire.

Je ne peux pas vous envoyer le fichier car il contient des info confidentielles.

Je testerais ça dans les plus bref délais et revient vers vous avec un résultat.

Merci beaucoup.

Rechercher des sujets similaires à "incompatibilite erreur"