Problème syntaxe VBA

Problème syntaxe VBA - VB/VBA/VBS - Programmation

Marsh Posté le 02-06-2017 à 16:28:25    

Bonjour à tous, je n'arrive pas à comprendre pourquoi cette ligne ne fonctionne pas:
J'ai changé les variable en variant au lieu de integer, j'ai essayé sans range, avec range et il y a quelque chose que je fais mal , mais je ne trouve pas mon erreur... une bonne âme peut-elle m'aider et m'expliquer ?
 
 
 
Sub correc()
 
Dim valeur As Variant
Dim i As Integer 'ligne
Dim j As Integer 'colonne
Dim valeurmax As Variant
 
 
i = 4
j = 3
 
For j = 3 To 110
  For i = 4 To 23
     
    valeurmax = Workbooks("Temps 1.xlsm" ).Sheets("Tableau" ).Range("D1" ).Value
 
     
     If (Cells(i, j)) > valeurmax Then
       Range(Cells(i, j)).Value = valeurmax              ''' c'est celle-là qui me bloque
       
     End If
  Next i
Next j
 
End Sub


Message édité par or78 le 02-06-2017 à 16:29:17
Reply

Marsh Posté le 02-06-2017 à 16:28:25   

Reply

Marsh Posté le 03-06-2017 à 00:14:09    

 
            Bonjour,
 
            le Range est de trop, juste voir la ligne précédente …
 

Reply

Marsh Posté le 03-06-2017 à 07:06:49    

Merci Marc, mais j'ai déjà essayé. Je te montre:
 
Si je le mets comme ça  
(Cells(i, j)) = valeurmax, ça ne marche pas
 
(Cells(i, j)).value = valeurmax, non plus
 
       

Reply

Marsh Posté le 03-06-2017 à 09:41:26    

 
            Pas besoin de parenthèses encadrant l'instruction, l'utiliser juste comme dans l'exemple de l'aide VBA interne !
 
            Autre point :  comme cette variable valeurmax est fixe, l'affecter avant la boucle et contrôler sa cellule source (pas d'erreur) …
 

Reply

Marsh Posté le 03-06-2017 à 10:19:29    

Super Marc
 
Cells(i, j).Value = valeurmax
ou bien
Cells(i, j) = valeurmax
 
 
Comme ça ça marche, grâce à toi, mais j'aimerais bien que tu m'expliques pourquoi avec le if, il faut des parenthèses et pas après.
 
De plus, j'avais essayé de réutiliser une syntaxe qui marchait dans un autre de mes codes:
Sheets("SAISIES" ).Range("C" & derniereLigne).Value = OFSuivi
 
Et c'est pour ça que j'avais mis un range que j'avais écrit à peu près comme ça:
range( colonne & derniereLigne).value et ça ne marchait pas non plus.
 
Je ne sais pas quand il faut lui mettre range ou non, ni du coup à quoi sert value, puisque avec ou sans ne dérange pas dans ce cas...
En tout cas, merci pour tes conseils ! :jap:

Reply

Marsh Posté le 03-06-2017 à 14:51:38    

 
            Tout fonctionne quand c'est bien écrit !
 
            As-tu essayé au moins dans la ligne du If sans les parenthèses supplémentaires ?   Pour moi elles sont là aussi inutiles !
 
            Sans propriété précisée en lecture, souvent VBA choisit la propriété Value mais parfois il choisit la propriété Text
            pouvant donc avoir une conséquence certaine pour une donnée numérique !
 
            Sinon juste en consultant l'aide VBA interne  - tout y est ! -  de Range  &  Cells  :
            pour une seule cellule combiner Range & Cells est une erreur car c'est soit l'un soit l'autre …
 

Reply

Marsh Posté le 03-06-2017 à 17:35:34    

Non, dans le if, je n'avais rien changé puisque ça marchait.
En revanche, je ne suis pas sûr de comprendre ta dernière remarque. J'avais pas mal surfé pour essayer de me dépanner et il y a plein de pages avec range et cells combinés
 
https://msdn.microsoft.com/fr-fr/li [...] 96273.aspx  par exemple, donc j'essayais de faire pareil


Message édité par or78 le 03-06-2017 à 17:36:25
Reply

Marsh Posté le 04-06-2017 à 20:49:15    

« En revanche, je ne suis pas sûr de comprendre ta dernière remarque. »
Il faut bien lire la réponse de MarcL, notamment : ... pour une seule cellule ...
 
Edit : Dans l'exemple de Microsoft, au lieu de :
If r.Cells(n, 1) = r.Cells(n + 1, 1) Then
Pour éviter tout problème, il est préférable de préciser :
If r.Cells(n, 1).Value = r.Cells(n + 1, 1).Value Then
ou
If r.Cells(n, 1).Text = r.Cells(n + 1, 1).Text Then


Message édité par patrice33740 le 04-06-2017 à 20:54:47

---------------
Cordialement, Patrice
Reply

Marsh Posté le 05-06-2017 à 08:02:32    

OK, merci Patrice :)

Reply

Marsh Posté le 06-06-2017 à 18:10:41    

 
            Merci Patrice.
 
            En affectation (écriture) il n'y a pas de souci car Value est bien la propriété par défaut d'une cellule.
 
            C'est en lecture où cela peut poser un souci de ne pas spécifier de propriété car, même si souvent
            Value est la propriété choisie à l'exécution, à de rares occasions cela peut être la propriété Text
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed