[VBA] Question de synthaxe je pense
Fermé
Alanderson69
Messages postés
35
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
10 juillet 2009
-
9 juil. 2009 à 13:24
Alanderson69 Messages postés 35 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 10 juillet 2009 - 10 juil. 2009 à 10:12
Alanderson69 Messages postés 35 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 10 juillet 2009 - 10 juil. 2009 à 10:12
A voir également:
- [VBA] Question de synthaxe je pense
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
14 réponses
Bonjour
je ne suis pas spécialiste, mais il me semble que les formules doivent être entrées en anglais dans le VB, même si après elles apparaissent en français dans la feuille
ActiveCell.Formula = "=vlookup(A2,'" & Feuille.Name & "'!B3:C60,2,False)"
Et s'il te plaît, plus jamais de h à "syntaxe"
je ne suis pas spécialiste, mais il me semble que les formules doivent être entrées en anglais dans le VB, même si après elles apparaissent en français dans la feuille
ActiveCell.Formula = "=vlookup(A2,'" & Feuille.Name & "'!B3:C60,2,False)"
Et s'il te plaît, plus jamais de h à "syntaxe"
Alanderson69
Messages postés
35
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
10 juillet 2009
9 juil. 2009 à 13:41
9 juil. 2009 à 13:41
Oula ! je suis désolé pour le "h" ^^
Le problème sur la formule de recherche a en effet disparu, mais j'ai un soucis sur la reconnaissance du format de la variable :
somme = somme + Range("A5").Value
Il me sort une erreur : Incompatibilité de type.
J'ai essayé : Val(Range("A5").Value) pour convertir en nombre mais ça ne fonctionne pas non plus.
Merci de me tenir au courant si tu vois une possibilité.
Le problème sur la formule de recherche a en effet disparu, mais j'ai un soucis sur la reconnaissance du format de la variable :
somme = somme + Range("A5").Value
Il me sort une erreur : Incompatibilité de type.
J'ai essayé : Val(Range("A5").Value) pour convertir en nombre mais ça ne fonctionne pas non plus.
Merci de me tenir au courant si tu vois une possibilité.
Ok, vu. Quand la recherche n'aboutit pas, tu as la valeur #N/A et c'est là que tu as ton problème.
Il ne faut faire l'addition que si le rechercheV aboutit :
If IsNumeric(Range("A5").Value) Then somme = somme + Val(Range("A5").Value)
Il ne faut faire l'addition que si le rechercheV aboutit :
If IsNumeric(Range("A5").Value) Then somme = somme + Val(Range("A5").Value)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alanderson69
Messages postés
35
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
10 juillet 2009
9 juil. 2009 à 14:16
9 juil. 2009 à 14:16
Eh bien, cela marche plutot bien ! Merci pour ca !
Dernière petite nuance à laquelle je n'avais pas encore pensé :
Si une référence est plusieurs fois dans la colonne B, est-ce possible de toutes les comptabiliser ?
Pour le moment, il ne me prend que la première trouvée. Je pense qu'il dois falloir balayer toute la feuille et lui dire de poursuivre même s'il a trouvé une première valeur.
Quelqu'un a une idée pour programmer ca ?
Merci pour tout
Dernière petite nuance à laquelle je n'avais pas encore pensé :
Si une référence est plusieurs fois dans la colonne B, est-ce possible de toutes les comptabiliser ?
Pour le moment, il ne me prend que la première trouvée. Je pense qu'il dois falloir balayer toute la feuille et lui dire de poursuivre même s'il a trouvé une première valeur.
Quelqu'un a une idée pour programmer ca ?
Merci pour tout
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
9 juil. 2009 à 14:22
9 juil. 2009 à 14:22
Bonjour à tous,
Je ne vois pas l'intérêt d'utiliser des formules alors que l'on est en VBA..
cette macro parcourt les feuilles en évitant la feuille "recherche" et teste si la valeur de A2 existe dans le tableau B3:B60
end sub
Je ne connais l'ensemble du problème mais il y a une fonction consolider dans XL. peut-être que...
voir ce site inconturnable
http://boisgontierjacques.free.fr/
Je ne vois pas l'intérêt d'utiliser des formules alors que l'on est en VBA..
cette macro parcourt les feuilles en évitant la feuille "recherche" et teste si la valeur de A2 existe dans le tableau B3:B60
Sub consolider() Dim valeur Dim Feuille As Worksheet Dim somme As Single, total As Single valeur = Sheets("recherche").Range("A2") For Each Feuille In Worksheets If Feuille.Name <> "recherche" Then With Feuille If Application.CountIf(Range("B3:B60"), valeur) > 0 Then somme = .Range("B2:B60").Find(valeur, .Range("B2")).Offset(0, 1) End If End With total = total + somme End If Next Sheets("recherche").Range("A5") = total
end sub
Je ne connais l'ensemble du problème mais il y a une fonction consolider dans XL. peut-être que...
voir ce site inconturnable
http://boisgontierjacques.free.fr/
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
9 juil. 2009 à 14:41
9 juil. 2009 à 14:41
re,
tite démo
https://www.cjoint.com/?hjoOu5MqQu
tite démo
https://www.cjoint.com/?hjoOu5MqQu
Alanderson69
Messages postés
35
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
10 juillet 2009
9 juil. 2009 à 14:46
9 juil. 2009 à 14:46
michel_m,
quand j'execute ta macro, le résultat qui me reviens est "0". D'après ce que tu as rentré comme info, j'attendrais un "67.5".
De plus, s'il existe plusieurs toto dans la colonne d'une feuille, je ne pense pas que ca marche.
C'est vraiment cool de ta part de te donner du mal.
Peux-tu me dire si c'est réalisable ?
Merci d'avance
quand j'execute ta macro, le résultat qui me reviens est "0". D'après ce que tu as rentré comme info, j'attendrais un "67.5".
De plus, s'il existe plusieurs toto dans la colonne d'une feuille, je ne pense pas que ca marche.
C'est vraiment cool de ta part de te donner du mal.
Peux-tu me dire si c'est réalisable ?
Merci d'avance
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
9 juil. 2009 à 15:15
9 juil. 2009 à 15:15
ben oui, mais fallait savoir qu'il pouvait y avoir plusieurs toto...Je dois m'absenter: en attendant, regarde dans l'exemple de l'aide de FIND ce serait à adapter au niveau de l'affectation de somme (ligne en italique)
pour le 0, que je suis c... (le bruit des cigales, sans doute, pour justifier mon erreur ) ;-)
l'affectation de total était mal placée!!!
as tu regardé le site indiqué ?
pour le 0, que je suis c... (le bruit des cigales, sans doute, pour justifier mon erreur ) ;-)
l'affectation de total était mal placée!!!
as tu regardé le site indiqué ?
Sub consolider() Dim valeur Dim Feuille As Worksheet Dim somme As Single, total As Single valeur = Sheets("recherche").Range("A2") For Each Feuille In Worksheets If Feuille.Name <> "recherche" Then With Feuille test = Feuille.Name If Application.CountIf(Range("B3:B60"), valeur) > 0 Then somme = .Range("B2:B60").Find(valeur, .Range("B2")).Offset(0, 1) total = total + somme End If End With End If Next Sheets("recherche").Range("A5") = total End Sub
Alanderson69
Messages postés
35
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
10 juillet 2009
9 juil. 2009 à 15:20
9 juil. 2009 à 15:20
j'ai regardé ton site, en effet, mais je n'ai pas trouvé l'info concernant le bouclage des ligne pour trouver plusieurs valeurs par page. J'essaye de regarder de plus près. Si je trouve, je laisserais un post ici. Dans le cas inverse, si tu peux continuer à me donner un coup de main, ca serait avec plaisir !
Merci encore
Merci encore
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
9 juil. 2009 à 17:38
9 juil. 2009 à 17:38
ce que j'ai voulu dire:as tu regardé l'aide Microsoft pour FIND et son exemple ?
c'est très simple à adapter: tu as juste à changer la plage de recherche (B3:B60) et
c.value=2 en
total=total+c.offset(0,1)
plus besoin de la variable somme
je te laisse terminer (chez moi, ca marche)
bonne soirée
c'est très simple à adapter: tu as juste à changer la plage de recherche (B3:B60) et
c.value=2 en
total=total+c.offset(0,1)
plus besoin de la variable somme
je te laisse terminer (chez moi, ca marche)
bonne soirée
Alanderson69
Messages postés
35
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
10 juillet 2009
10 juil. 2009 à 09:04
10 juil. 2009 à 09:04
Eh bien malgré 2 heures passées à essayer de faire fonctionner ce programme pourtant pas compliqué, ... je suis bloqué. Est-ce possible que tu m'envoies le programme s'il marche chez toi ? Je regarderaisalors comment tu as fait.
Merci michel_m
Merci michel_m
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
10 juil. 2009 à 09:17
10 juil. 2009 à 09:17
bonjour,
Moi aussi, j'ai passé et je continue de passer des heures à chercher et à me planter: c'est comme cela qu'on progresse TRES petit à petit.
Donc... je t'ai mis en gras ce qui est à adapter à partir de l'aide MS, le reste de la proc est bonne (déclaration à changer)
With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5 ==> total=total+c. (la cellule à gauche=)
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Moi aussi, j'ai passé et je continue de passer des heures à chercher et à me planter: c'est comme cela qu'on progresse TRES petit à petit.
Donc... je t'ai mis en gras ce qui est à adapter à partir de l'aide MS, le reste de la proc est bonne (déclaration à changer)
With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5 ==> total=total+c. (la cellule à gauche=)
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Alanderson69
Messages postés
35
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
10 juillet 2009
10 juil. 2009 à 10:12
10 juil. 2009 à 10:12
Est-ce possible que tu m'envoies le fichier sur Cjoint ?
Le problème est que la valeur a chercher avec le Find est variable en fonction de ce que rentre l'utilisateur.
J'ai essayé de créer une variable mais je n'arrive pas à l'appeler dans e Find .
Merci d'avance !
Le problème est que la valeur a chercher avec le Find est variable en fonction de ce que rentre l'utilisateur.
J'ai essayé de créer une variable mais je n'arrive pas à l'appeler dans e Find .
Merci d'avance !