Macro BVA- Incompatibilité de type

Résolu/Fermé
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020 - 3 juin 2020 à 16:02
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 - 5 juin 2020 à 07:47
Bonjour à tous,
J'ai créer une macro il y a peu et lorsque que je veux la lancer le message "Incompatibilité de type" s'affiche.
Ma macro est une série de Si et FinSi.
Elle doit afficher quelque chose quand elle trouve le bon nombre dans une case, ce quelle fait. Mais le message s'affiche quand même.

Pouvez-vous m'aider ?

PS : il y a un autre problème : la macro doit faire ce que j'ai décrit pour plusieurs ligne mais seul la première ligne s'affiche.

7 réponses

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
3 juin 2020 à 16:07
Bonjour

Difficile de t'aider sans voir
Envoies ton fichier sur https://mon-partage.fr/ et joins le lien obtenu à ton prochain message

Cdlmnt
0
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020
Modifié le 3 juin 2020 à 16:29
Première fois que j'utilise le forum désolé

voici un lien Google Drive : https://accounts.google.com/ServiceLogin?service=wise&passive=1209600&continue=https://drive.google.com/drive/folders/1FHPzEgLMIo-Fx7RQ1G8J3BMFlzC_k6Zk?usp%3Dsharing&followup=https://drive.google.com/drive/folders/1FHPzEgLMIo-Fx7RQ1G8J3BMFlzC_k6Zk?usp%3Dsharing

La macro s'appelle Planning_1
et pour l'executer il faut cliquer sur le case RESULTAT dans la feuille Données
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
3 juin 2020 à 16:30
Utilises le service de https://mon-partage.fr/ pour envoyer ton fichier
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166
3 juin 2020 à 16:31
La prochaine fois, évite de passer par Google !

Il y a soit le lien fourni par ccm81, soit celui-ci :

https://www.cjoint.com/
0
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020
3 juin 2020 à 16:35
ok
Pourquoi Google n'est pas bien ?

https://www.cjoint.com/c/JFdoINqANZn
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166
3 juin 2020 à 17:19
Non, pas là car il faut demander l'accès au fichier, c'est une perte de temps ;)

J'ai regardé ton fichier, lancé toutes les macros (OMG) et je n'ai rien décelé.

à quel moment il y a un problème, quand tu fais/lances quoi ?
0
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020 > Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022
Modifié le 3 juin 2020 à 17:50
Merci de la réponse.

Et bien quand plusieurs Tache sont affichées (exemple : Tache A, Tache B et Tache C) et que je lance la macro Toutes_ensemble avec le bouton RESULTAT sur la page Données, un message d'erreur s'affiche : Incompatibilité de type

L'incompatibilité de type est sur le début d'un SI (Macro Planning_1) qui est le chiffre d'après celui dans la cellule Données!D9. et si je change d'un nombre en D9, l'erreur se déplace d'un nombre aussi...
Ex : j'ai saisi 1 dans Données!D9
Incompatibilité de type pour SI Données!C9 = 2 FAIRE

C'est peut-être le fait de les lancer toute en même temps qui pose problème ?
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166
Modifié le 3 juin 2020 à 18:14
C'est normal, tu dis à ta macro SI D9 = 6 mais ça ne fonctionne pas tout comme ça aurait bloqué avant SI D9 = 2 ;)

Correctif avec des Else ("sinon") :

Sub Planning_1()
'
'Planning_1 Macro
'

'
If Range("B9") = "Tache A" Then
If Range("D9") = 1 Then
Sheets("Banque_de_données").Select
Range("C7:F7").Copy
Sheets("Planning").Select
Range("A9:D9").Select
ActiveSheet.Paste
Else
If Range("D9") = 2 Then
Sheets("Banque_de_données").Select
Range("C7:F8").Copy
Sheets("Planning").Select
Range("A9:D10").Select
ActiveSheet.Paste
Else
If Range("D9") = 3 Then
Sheets("Banque_de_données").Select
Range("C7:F9").Copy
Sheets("Planning").Select
Range("A9:D11").Select
ActiveSheet.Paste
Else
If Range("D9") = 4 Then
Sheets("Banque_de_données").Select
Range("C7:F10").Copy
Sheets("Planning").Select
Range("A9:D12").Select
ActiveSheet.Paste
Else
If Range("D9") = 5 Then
Sheets("Banque_de_données").Select
Range("C7:F11").Copy
Sheets("Planning").Select
Range("A9").Select
ActiveSheet.Paste
Else
If Range("D9") = 6 Then
Sheets("Banque_de_données").Select
Range("C7:F12").Copy
Sheets("Planning").Select
Range("A9:D14").Select
ActiveSheet.Paste
End If
End If
End If
End If
End If
End If
End If


0
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020
Modifié le 4 juin 2020 à 11:58
Merci beaucoup pour ces explications !

Bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
Modifié le 3 juin 2020 à 20:34
> A_0504.
1. Beaucoup à redire dans le code, en particulier une foule de Select qui ne sont pas utiles
Par exemple dans ton module 3, la procédure Tache_B() qu'on peut démarrer comme ceci (les bordures peuvent être traitées en bloc
Sub Tache_BB()
'
' Tache_B Macro
'
Sheets("Données").Select
Range("B10").Value = "Tache B"
Range("C10").Value = "0"
Range("D10").FormulaLocal = "=SI(C10<$H$9*$F$11+1;1;SI(C10<2*$H$9*$F$11+1;2;SI(C10<3*$H$9*$F$11+1;3;SI(C10<4*$H$9*$F$11+1;4;SI(C10<5*$H$9*$F$11+1;5;SI(C10<6*$H$9*$F$11+1;6;SI(C10<7*$H$9*$F$11+1;7;SI(C10<8*$H$9*$F$11+1;8;""MO non-disponible""))))))))"
With Range("C10:D10").Borders
  .LineStyle = xlContinuous
  .ColorIndex = 0
  .Weight = xlThin
End With
.....
End Sub


2. J'ai un peu simplifié le code proposé par Yoyo1000 en évitant les If ... Then ... else

Option Explicit

Sub Planning_1()
'
'Planning_1 Macro
'
If Range("B9") = "Tache A" Then
  Sheets("Banque_de_données").Select
  Select Case Range("B9").Value
    Case 1: Range("C7:F7").Copy
            Sheets("Planning").Select
            Range("A9:D9").Select
            ActiveSheet.Paste
    Case 2: Range("C7:F8").Copy
            Sheets("Planning").Select
            Range("A9:D10").Select
            ActiveSheet.Paste
    Case 3: Range("C7:F9").Copy
            Sheets("Planning").Select
            Range("A9:D11").Select
            ActiveSheet.Paste
    Case 4: Range("C7:F10").Copy
            Sheets("Planning").Select
            Range("A9:D12").Select
            ActiveSheet.Paste
    Case 5: Range("C7:F11").Copy
            Sheets("Planning").Select
            Range("A9").Select
            ActiveSheet.Paste
    Case 6: Range("C7:F12").Copy
            Sheets("Planning").Select
            Range("A9:D14").Select
            ActiveSheet.Paste
  End Select
End If
End Sub

Cdlmnt
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
3 juin 2020 à 21:21
Une erreur ici
Select Case Range("B9").Value
lire
Select Case Range("D9").Value
Cdlmnt
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166
3 juin 2020 à 21:47
Bonsoir ccm81, je n'ai pas pris le temps d’alléger son code car il y avait matière à !

Et puis, j'ai pensé qu'il est plus compréhensif pour lui, malgré cette énorme quantité de .Select(ion) :)

Bonne soirée à vous.
0
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020
Modifié le 4 juin 2020 à 11:44
Oui je pense bien qu'il est possible d'alléger tout ca car je vient de commencer à coder en VBA donc je ne connais pas tout :(
Et pour me justifier sur le nombre de répétition, c'est juste que j'ai copier-coller le code que j'avais fait pour une solution pour toute les autres.
Mais merci beaucoup pour le code je vais essayer ca de suite !

Bonne journée
0
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020
4 juin 2020 à 11:51
J'ai essayer ton code mais il ne fonctionnent pas, il ne donne q'une seul personne en final dans la feuille planning. Mais pas de soucis j'ai pris celui de Yoyo qui fonctionne très bien.

Merci de ton aide malgré tout
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166
Modifié le 4 juin 2020 à 12:05
Il y a l'erreur remarquée par ccm81 et il y en avait une autre :

Range("A9:").Select => Range("A9:D13").Select

If Range("B9") = "Tache A" Then
Sheets("Banque_de_données").Select
Select Case Range("D9").Value
Case 1: Range("C7:F7").Copy
Sheets("Planning").Select
Range("A9:D9").Select
ActiveSheet.Paste
Case 2: Range("C7:F8").Copy
Sheets("Planning").Select
Range("A9:D10").Select
ActiveSheet.Paste
Case 3: Range("C7:F9").Copy
Sheets("Planning").Select
Range("A9:D11").Select
ActiveSheet.Paste
Case 4: Range("C7:F10").Copy
Sheets("Planning").Select
Range("A9:D12").Select
ActiveSheet.Paste
Case 5: Range("C7:F11").Copy
Sheets("Planning").Select
Range("A9:D13").Select
ActiveSheet.Paste
Case 6: Range("C7:F12").Copy
Sheets("Planning").Select
Range("A9:D14").Select
ActiveSheet.Paste
End Select
End If


à retester

Au passage, ccm81, quelle balise de code utilises-tu pour VBA ?

0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 427
Modifié le 4 juin 2020 à 19:59
Salut Yoyo01000

1. Merci d'avoir corrigé l'erreur (le doigt a du rester un peu trop sur la touche Suppr)
2. Pour la balise de code c'est l’icône flèche vers le bas (l'avant dernière) et tu choisis Basic
3. Le mieux, c'est de tout mettre dans la même macro ! Sinon, en condensé, tu utilises Call en lui attribuant le nom du module & de la macro.
Le plus simple, mettre la procédure/fonction dans un module général (Module 1, ...) et de les déclarer publiques pour éviter lors d'un appel de préciser le module

Bonne soirée à toi
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166 > ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024
5 juin 2020 à 07:47
Merci ccm81 :)
0
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020
4 juin 2020 à 12:08
J'ai un autre petit problème : saurez-vous comment exécuter plusieurs macro en même temps grâce à une macro ?

Merci
cordialement
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 166
4 juin 2020 à 12:20
Le mieux, c'est de tout mettre dans la même macro ! Sinon, en condensé, tu utilises Call en lui attribuant le nom du module & de la macro.
0
A_0504 Messages postés 9 Date d'inscription mercredi 3 juin 2020 Statut Membre Dernière intervention 4 juin 2020 > Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022
4 juin 2020 à 14:48
Ok super merci !
0