Problème syntaxe VBA - VB/VBA/VBS - Programmation
Marsh Posté le 03-06-2017 à 00:14:09
Bonjour,
le Range est de trop, juste voir la ligne précédente …
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
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) …
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 !
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 …
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
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
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 …
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