Erreur 13
Fermé
martinre
-
Modifié le 19 mai 2017 à 21:59
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 19 mai 2017 à 14:39
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 19 mai 2017 à 14:39
A voir également:
- Erreur 13
- Erreur 0x80070643 - Accueil - Windows
- Redmi note 13 5g test - Accueil - Téléphones
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Fifa 13 apk - Télécharger - Jeux vidéo
2 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 19 mai 2017 à 14:34
Modifié le 19 mai 2017 à 14:34
Bonjour,
Il y a de nombreuses erreurs sur cette ligne :
1) Sheets
est un mot du langage VBA, pour éviter toute ambigüité de compilation, il est impératif ne ne pas utiliser les mots du langage pour nommer des variables.
2) if(" + Cells
toujours pour éviter les ambigüités lors de la compilation, il est préférable d'utiliser "&" plutôt que "+" pour concaténer des chaines de caractères
3) Cells(NbLigne + 1, CptCol - 3).Address(0, 0) <> 0
a pour résultat True ou False, le "<> 0" doit être intégré à la chaine de caractères
4) CptCol - 3).Adress(0, 0)
en VBA adresse prend 2 d (Address)
5) + "" +
ajoute un seul double cote , pour en ajouter 2 il faut écrire : & """" &
PS:
6) + ";" +
En VBA, avec formula, le séparateur d'argument est la virgule, i.e. & "," &
Cependant tu peux aussi écrire les formules dans le langage courant (français) en utilisant FormulaLocal.
Ce qui pourrait donner :
Cordialement
Patrice
Il y a de nombreuses erreurs sur cette ligne :
1) Sheets
est un mot du langage VBA, pour éviter toute ambigüité de compilation, il est impératif ne ne pas utiliser les mots du langage pour nommer des variables.
2) if(" + Cells
toujours pour éviter les ambigüités lors de la compilation, il est préférable d'utiliser "&" plutôt que "+" pour concaténer des chaines de caractères
3) Cells(NbLigne + 1, CptCol - 3).Address(0, 0) <> 0
a pour résultat True ou False, le "<> 0" doit être intégré à la chaine de caractères
4) CptCol - 3).Adress(0, 0)
en VBA adresse prend 2 d (Address)
5) + "" +
ajoute un seul double cote , pour en ajouter 2 il faut écrire : & """" &
PS:
6) + ";" +
En VBA, avec formula, le séparateur d'argument est la virgule, i.e. & "," &
Cependant tu peux aussi écrire les formules dans le langage courant (français) en utilisant FormulaLocal.
Ce qui pourrait donner :
Worksheets(NoSheet).Cells(NbLigne + 1, CptCol).Formula = "=if(" & Cells(NbLigne + 1, CptCol - 3).Address(0, 0) & "<> 0 ," & Cells(NbLigne + 1, CptCol - 1).Address(0, 0) & "/" & Cells(NbLigne + 1, CptCol - 3).Address(0, 0) & ","""")"
Cordialement
Patrice
Merci Patrice ca fonctionne en effet ! Pas toujours facile pour un stagiaire de trouver directement les bonnes formules et certaines choses m'ont échappé...surtout quand on galère pendant 2j...
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
19 mai 2017 à 14:39
19 mai 2017 à 14:39
Re,
Pour faciliter la détection d'erreur, tu peux utiliser une variable intermédiaire (en cas d'erreur tu peux voir la valeur de la variable dans la fenêtre variables locales)
Exemple :
Pour faciliter la détection d'erreur, tu peux utiliser une variable intermédiaire (en cas d'erreur tu peux voir la valeur de la variable dans la fenêtre variables locales)
Exemple :
formule = "=if(" & Cells(NbLigne + 1, CptCol - 3).Address(0, 0) & _ "<> 0 ," & Cells(NbLigne + 1, CptCol - 1).Address(0, 0) & _ "/" & Cells(NbLigne + 1, CptCol - 3).Address(0, 0) & ","""")" Worksheets(NoSheet).Cells(NbLigne + 1, CptCol).Formula = formule