Macro BVA- Incompatibilité de type
Résolu
A_0504
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Yoyo01000 Messages postés 1639 Date d'inscription Statut Membre Dernière intervention -
Yoyo01000 Messages postés 1639 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Incompatibilité de type vba
- "Erreur d’exécution 13 Incompatibilité de Type" dans VBA. ✓ - Forum VB / VBA
- Clear type - Guide
- Type de ram - Guide
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Comment changer le type de fichier - Guide
7 réponses
Bonjour
Difficile de t'aider sans voir
Envoies ton fichier sur https://mon-partage.fr/ et joins le lien obtenu à ton prochain message
Cdlmnt
Difficile de t'aider sans voir
Envoies ton fichier sur https://mon-partage.fr/ et joins le lien obtenu à ton prochain message
Cdlmnt
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
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
La prochaine fois, évite de passer par Google !
Il y a soit le lien fourni par ccm81, soit celui-ci :
https://www.cjoint.com/
Il y a soit le lien fourni par ccm81, soit celui-ci :
https://www.cjoint.com/
ok
Pourquoi Google n'est pas bien ?
https://www.cjoint.com/c/JFdoINqANZn
Pourquoi Google n'est pas bien ?
https://www.cjoint.com/c/JFdoINqANZn
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 ?
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 ?
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") :
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
> 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
2. J'ai un peu simplifié le code proposé par Yoyo1000 en évitant les If ... Then ... else
Cdlmnt
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
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
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
Il y a l'erreur remarquée par ccm81 et il y en avait une autre :
Range("A9:").Select => Range("A9:D13").Select
à retester
Au passage, ccm81, quelle balise de code utilises-tu pour VBA ?
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 ?
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
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