begin process at 2012 02 13 15:47:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

procédure VBA qui ne fonctionne pas sur un classeur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

procédure VBA qui ne fonctionne pas sur un classeur

mardi 23 juin 2009 à 19:15:52 | procédure VBA qui ne fonctionne pas sur un classeur

rimbaut

Bonsoir,
J'ai écrit ces 2 procédures (complété par une personne sympa du forum et je l'en remercie). Elle fonctionne sur un classeur et sur celui cela bogue et je ne comprends pas pourquoi. J'ai vérifié que le nom de ma feuille soit identique et rien n'y fait. Aussi j'envoie un message d'aide car quand on a le nez dans le guidon on ne voit plus rien.

Voici la procédure 1 qui ne fonctionne pas. J'ai un message d'erreur à la ligne for each :

Option Explicit

Sub comparaisonBalance()
Worksheets("comparaisonBalN").Activate
  Dim cellule_2007 As Range
  Dim y_comparaison As Integer
  Dim range_2007, range_2008 As String
 
  range_2007 = "A11:A" & calcMaxRow("balanceN-1")
  range_2008 = "A11:A" & calcMaxRow("balanceN")
 
  y_comparaison = 5
 
  For Each cellule_2007 In Worksheets("balanceN-1").Range(range_2007)
     If Worksheets("balanceN").Range(range_2008).Find(cellule_2007.Value, LookIn:=xlValues) Is Nothing Then
     ' copie les n° de cptes manquants
     Sheets("comparaisonBalN").Cells(y_comparaison, 1).Value = cellule_2007.Value
    
     'copie les intitulés de comptes manquants
     Sheets("comparaisonBalN").Cells(y_comparaison, 2).Value = cellule_2007.Offset(, 1).Value
    
     y_comparaison = y_comparaison + 1
    
     End If
  Next cellule_2007
 
End Sub

Function calcMaxRow(une_feuille As String)
    Dim y As Integer

    y = 11
    Do While Sheets(une_feuille).Cells(y, 1) <> ""
        y = y + 1
    Loop
   
End Function


Voici la procédure 2 qui fonctionne :

Sub ComparaisonBalanceN_1()
Worksheets("comparaisonBalanceN-1").Activate
    Dim cellule_2008 As Range
    Dim y_comparaison As Integer
    Dim range_2007, range_2008 As String
  
    range_2008 = "A11:A" & calcMaxRow("BalanceN-1")
    range_2007 = "A11:A" & calcMaxRow("BalanceN")
  
    y_comparaison = 5
   
     For Each cellule_2008 In Worksheets("BalanceN").Range(range_2008)
        If Worksheets("balanceN-1").Range(range_2007).Find(cellule_2008.Value, LookIn:=xlValues) Is Nothing Then
        Sheets("ComparaisonBalanceN-1").Cells(y_comparaison, 1).Value = cellule_2008.Value
        Sheets("ComparaisonBalanceN-1").Cells(y_comparaison, 2).Value = cellule_2008.Offset(, 1).Value
            y_comparaison = y_comparaison + 1
        End If
    Next cellule_2008
End Sub

Function calcMaxRow(une_feuille As String)
    Dim y As Integer

    y = 11
    Do While Sheets(une_feuille).Cells(y, 1) <> ""
        y = y + 1
    Loop
  
    calcMaxRow = y - 1
End Function

Je remercie vivement la personne qui pourra solutionner ce problème

Bonne soirée

mercredi 24 juin 2009 à 02:16:59 | Re : procédure VBA qui ne fonctionne pas sur un classeur

Orohena


Salut

La fonction calcMaxRow() ne renvoie rien !

Amicalement
mercredi 24 juin 2009 à 08:01:29 | Re : procédure VBA qui ne fonctionne pas sur un classeur

rimbaut

Bonjour,
Je ne pense pas que ce soit la fonction qui est en cause car le code a bien fonctionné jusqu'à ce que j'ajoute la ligne suivante :
Sheets("ComparaisonBalanceN-1").Cells(y_comparaison, 2).Value = cellule_2008.Offset(, 1).Value

et même avec cette ligne, il fonctionne bien sur un classeur mais pas sur l'autre. C'est la où je ne comprends pas.

Pourquoi fonctionne t-il sur un classeur et pas sur l'autre ??????

Merci pour toute aide
mercredi 24 juin 2009 à 09:52:04 | Re : procédure VBA qui ne fonctionne pas sur un classeur

bigfish_le vrai

Membre Club
Salut,

Cela ne marche pas... mais y a t'il un message d'erreur ?

autre chose : la propriété Cells s'applique a la propriété Worksheets et pas a la propriété Sheets. en general c'est de la que viennent les problemes

A+
mercredi 24 juin 2009 à 15:14:30 | Re : procédure VBA qui ne fonctionne pas sur un classeur

rimbaut

Bonsoir,

il n'y a pas de message d'erreur simplement la ligne est surlignée en jaune.

mercredi 24 juin 2009 à 15:39:50 | Re : procédure VBA qui ne fonctionne pas sur un classeur

rimbaut

Re,
J'ai modifié la procédure 1 comme suit :

range_2007 = "A11:A" & calcMaxRow("balanceN")
  range_2008 = "A11:A" & calcMaxRow("balanceN-1")
 A présent, j'au l'erreur suivante :
"erreur d'éxécution 1004
erreur définie par l'application ou par l'objet"
mercredi 24 juin 2009 à 15:46:56 | Re : procédure VBA qui ne fonctionne pas sur un classeur

bigfish_le vrai

Membre Club

est_ce toujours la meme ligne qui est surlignée en jaune ?



mercredi 24 juin 2009 à 20:15:18 | Re : procédure VBA qui ne fonctionne pas sur un classeur

rimbaut

Oui, c'est toujours la même ligne qui est soulignée. Ce qui est curieux, c'est que j'ai fait cette même application sur un autre classeur et ça marche. Mais je voudrais savoir pourquoi ça ne marche pas ici d'autant plus que j'ai fait copier coller pour le code.!!!!!!!!!!!!!!
mercredi 24 juin 2009 à 21:54:27 | Re : procédure VBA qui ne fonctionne pas sur un classeur

bigfish_le vrai

Membre Club
comme deja dit plus haut:

la propriété Cells s'applique a la propriété Worksheets et pas a la propriété Sheets. en general c'est de la que viennent les problemes.

Autrement dit instabilite du code.

Et d'ailleur pour s'en persuader, il suffit, dans le code, de positionner le curseur sur la propriete cells et d'appuyer sur la touche F1.
Puis en haut de la page d'aide de cliquer sur: S'applique a

et de voir une liste :

Application Object
Range Collection
Worksheets Object


mais pas la propriete sheets

mercredi 24 juin 2009 à 22:20:35 | Re : procédure VBA qui ne fonctionne pas sur un classeur

bigfish_le vrai

Membre Club
pour completer, j'ajouterais que ce type d'instabilite peu meme existeren utlisant les objets et collection de liste donnee dans mon precedent message.

en cela peu fonctionner quand la feuille a la qu'elle s'applique la propriete Cells est active puis ne plus fonctionner quand cette meme feuille n'est plus active.

pour finir vas voir ici un exemple d'utilisation de cette propriete cells associee a une declaration With

1 2

Cette discussion est classée dans : cellule, comparaison, value, range, balancen


Répondre à ce message

Sujets en rapport avec ce message

macro pour comparer les comptes dans 2 feuilles différentes [ par rimbaut ] Bonsoir, J'ai écrit cette macro avec l'aide d'un copain afin de comparer les comptes se trouvant sur la feuille "BalanceN" avec les comptes se trouvan Cellule [ par fne67 ] Bonjour à tous,Voila j'ai un petit problème de longueur de chiffre, j'utilise ce code pour intégrer mon chiffre dans Excel 2007 et donc quand la cellu Copier une colonne pour comparer 2 balances [ par rimbaut ] Bonjour, J'ai écrit quelque temps ce code pour comparer 2 balances qui comporte en colonne 1 des numéros de comptes et en colonne 2 des libelles.Ce co [VBA] - Problème de boucle [ par jeyjey1 ] Bonjour, J'ai créer le code ci dessous qui me permet suivant que les 4 premiers caracteres d'une cellule soient egaux aux 4 autres de la cellule du Probleme doublon macro VBA [ par metek ] Bonjour!J'ai un petit voir meme enorme soucis avec une fonction de deblounage que j'ai fait:Je travail sur un tableau excel a taille variable en nombr problème de cellule vide [ par anna81 ] Je suis en train de réaliser une feuille de calcul de rdm, calcul d'une poutre iso au BAEL, si cela parle à quelqu'un mais je suis débutante et je ren [Déplacé VB6 --> VBA] probleme de comprehension [ par kromei ] voila j ai ce code , une partie est faites par moi , une autre est reprise de mon predecesseur le but est de selectionner à partir d une feuille des d [Déplacé .Net --> VBA] coiper coller cellule [ par jacky1002 ] Bonjour, Malgrès toutes les info présentent sur ce site je ne parvient pas a me débloquer. (je débute sur VBA) je vous mets dans le contexte. Je crée condition sur valeur cellule [ par thibaultanguy ] Bonjour le forum, Je pense notamment à tous ceux qui ont eu l'amabilité de répondre à mes précedentes questions qui m'ont permis d'évoluer dans mon pr Problème affectation variable dans une cellule. [ par poipoi83 ] Bonjour, j'ai écrit un code censé écrire dans une cellule la donnée d'une variable. cette variable est une formule contenant elle même des variables.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales