VBA acrementation de cellule. HELP

calimero75

XLDnaute Nouveau
bonjour à tous,

j'aimerai incrémenter la valeure d'une cellule suite à différents tests effectués dans une macro mais j'ai une ERREUR "incompatibilité de type" :mad:.
Afin d'éviter de passer par plusieurs variables..., car de nombreuses cellules sont testées, je voudrai procéder de la manière suivante :

pFichier = Application.GetOpenFilename("Fichier Excel,*.xls")
If pFichier = False Then Exit Sub
Set classeurSources = Workbooks.Open(pFichier)

Set classeurCible = ThisWorkbook
...
classeurCible.Sheets("feuille").Cells(1, i) = classeurCible.Sheets("feuille").Cells(1, i) + 1

Ma cellule est pourtant en format nombre :confused:
Comment procéder ????

Un grand merci
 
Dernière édition:

calimero75

XLDnaute Nouveau
Re : VBA acrementation de cellule. HELP

bonjour excel lent :)

Merci d'avoir répondu.
mal définie ma variable ? j'ai oublais "Set classeurCible = ThisWorkbook
" et me suis trompé dans mon copié coller ^^ je suis un peu creuvé désolé
mais je ne trouve pas :confused:

La macro commence comme ceci :

pFichier = Application.GetOpenFilename("Fichier Excel,*.xls")
If pFichier = False Then Exit Sub
Set classeurSources = Workbooks.Open(pFichier)

Set classeurCible = ThisWorkbook
...
classeurCible.Sheets("feuille").Cells(1, i) = classeurCible.Sheets("feuille").Cells(1, i) + 1
 
Dernière édition:

Lermiton

XLDnaute Nouveau
Re : VBA acrementation de cellule. HELP

Bonsoir Calimero75, Excel-lent et le forum

Dans :
classeurSources("feuille").Cells(x, y) = classeurSources.Sheets("feuille").Cells(x, y) + 1
il manque un ".Sheets" :
Code:
classeurSources.Sheets("feuille").Cells(x, y) = classeurSources.Sheets("feuille").Cells(x, y) + 1

De même dans :
classeurCible("feuille").Cells(1, i) = classeurCible.Sheets("feuille").Cells(1, i) + 1

Bonne fin de soirée
 
Dernière édition:

Lermiton

XLDnaute Nouveau
Re : VBA acrementation de cellule. HELP

Re calimero75

Il faudrait, si ta macro n'est pas trop longue, que tu l'envoies en totalité en l'insérant (copier-coller) entre deux balises de code (le bouton "#" dans la barre de menu des messages). Sinon, un fichier test (sans données confidentielles) pourrait aider à trouver l'erreur.
 

Gorfael

XLDnaute Barbatruc
Re : VBA acrementation de cellule. HELP

Salut calimero75 et le forum
Oui merci lermiton, je me suis complétement trompé dans mon post et je l'ai corrigé :eek:
Tu espères de l'aide en donnant un extrait de code erroné ?
Donnes ta macro en intégralité, par copier/coller, comme ça on aura une chance de voir tes erreurs réelles. j'ai des difficultés à travailler sérieusement quand je dois essayer de deviner... et ma boule de cristal est en grève en ce moment :D
A+
 

calimero75

XLDnaute Nouveau
Re : VBA acrementation de cellule. HELP

bonsoir gorfael,

lol merci à vous. voici la macro :D
Mais je suis totalement débutant et le code est long, esperons qu'il soit compréhenssible :eek:
L'erreur concerne toutes les lignes de ce type :

classeurCible.Sheets(FeuilleCible).Cells(12, ColonneCiblée) = classeurCible.Sheets(FeuilleCible).Cells(12, ColonneCiblée) + 1

Regarde la pièce jointe Nouveau Document texte.zip
 

Lermiton

XLDnaute Nouveau
Re : VBA acrementation de cellule. HELP

Re calimero75

Je viens de lire ta PJ, longue macro en effet, avec beaucoup d'imbrications de "If... End If", nombreuses variables portant des noms eux mêmes très longs, lignes de code très longues... Pas facile de décortiquer tout ça ! Et bien trop tard pour le faire ce soir...

Je te conseille, pour résoudre ton problème, de t'obliger à déclarer tes variables en mettant en toute première ligne de ton module de code "Option Explicit". Tu y verras sûrement plus clair quand elles seront toutes déclarées.

La nuit porte conseil, dit-on. A demain donc, si mes obligations m'en laissent le temps.
Bonne nuit.
 

Lermiton

XLDnaute Nouveau
Re : VBA acrementation de cellule. HELP

Bonjour calimero75 et le forum.

Je viens de passer un moment sur ta macro, calimero75, et je confirme : déclare toutes tes variables. Tu évitera ainsi des erreurs grossières comme :
Code:
DateDuJour = 18 / 10 / 2010
Car "18 / 10 / 2010" en VBA n'est pas une date mais une division ! Pour une variable de date, il faut écrire :
Code:
Dim DateDuJour As Date
DateDuJour = DateSerial(2010, 10, 18)

D'autre part, je te conseille de simplifier les noms de tes variables, dont la longueur rend très difficile la lecture du code, et de choisir soigneusement leur type en fonction de ce que tu veux faire.

Par exemple, si au lieu de
Code:
FeuilleSource = "Sheet1"
tu ecris :
Code:
Dim classeurSources As Workbook
Dim FeuilleSource As Worksheet
Set FeuilleSource = classeurSources.Sheets("Sheet1")
la ligne de code
Code:
If classeurSources.Sheets(FeuilleSource).Cells(ii, NumColonneValeurRecherchéeSource4) = Site1 Then
se simplifie en :
Code:
If FeuilleSource.Cells(ii, NumColonneValeurRecherchéeSource4) = Site1 Then

Bon courage !
 

calimero75

XLDnaute Nouveau
Re : VBA acrementation de cellule. HELP

bonsoir lermiton,

merci de m'avoir consacré du temp :D
j'ai modifié mon script grace à la déclaration "As Worksheet" pour mes 2 classeur et le code est effectivement plus clair. Reste à créer plusieurs fonctions...

Mon problème n'est pas résolu mais je cherche.... :)

Merci encore
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 882
Membres
103 981
dernier inscrit
vinsalcatraz