Bouche For each cellules non contigues
titeufdu89
Messages postés
374
Date d'inscription
Statut
Membre
Dernière intervention
-
titeufdu89 Messages postés 374 Date d'inscription Statut Membre Dernière intervention -
titeufdu89 Messages postés 374 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Après moulte recherche je ne trouve pas mal solution.... Est-il possible de faire une boucle For Each pour un certain nombre de cellules non contigues?
J'ai tenté de créer un macro mais elle ne fonctionne pas, lorsque je l'execute le message d'erreur suivant apparait :
ERREUR DE COMPILATION - INCOMPATIBLITE DU TYPE
Voici mon code :
apparemment c'est au niveau de la déclaration des cellules que ça ne joue pas, mais cela dit, il se peut tout a fait qu'il y ai d'autres anomalies ailleurs... Si quelqu'un à une idée, je prends volontiers!
Merci par avance
Après moulte recherche je ne trouve pas mal solution.... Est-il possible de faire une boucle For Each pour un certain nombre de cellules non contigues?
J'ai tenté de créer un macro mais elle ne fonctionne pas, lorsque je l'execute le message d'erreur suivant apparait :
ERREUR DE COMPILATION - INCOMPATIBLITE DU TYPE
Voici mon code :
Sub MajTout()
Dim B As Object
Dim R As Object
Set B = Sheets("Base de données")
Set R = Sheets("Rayon")
Dim cell As Range
Dim mycell As Range
Set mycell = ("A1, C1, E1, A8, C8, E8, A15, C15, E15, A22, C22, E22, A29, C29, E29, A36, C36, E36, A43, C43, E43, A50, C50, E50")
For Each cell In mycell
If cell.Value > 0 Then
cell.Select
Dim l As Integer
If WorksheetFunction.CountIf(B.Columns(1), cell) > 0 Then
l = ActiveCell.Offset(0, 1).Value
Else
l = Range("J3").Value
Dim code As Long
Dim pdt As String
Dim pdt2 As String
Dim px As Currency
code = ActiveCell.Value
B.Range("A" & l) = code
pdt = ActiveCell.Offset(2, 0).Value
B.Range("B" & l) = pdt
pdt2 = ActiveCell.Offset(3, 0).Value
B.Range("C" & l) = pdt2
px = ActiveCell.Offset(4, 1)
B.Range("H" & l) = px
End If
End If
Next cell
End Sub
apparemment c'est au niveau de la déclaration des cellules que ça ne joue pas, mais cela dit, il se peut tout a fait qu'il y ai d'autres anomalies ailleurs... Si quelqu'un à une idée, je prends volontiers!
Merci par avance
A voir également:
- Bouche For each cellules non contigues
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
une idée:
Option Explicit Sub MajTout() Dim B As Worksheet Dim R As Worksheet Set B = Sheets("Base de données") Set R = Sheets("Rayon") Dim cell As Range Dim mycell As Range Set mycell = Range("A1, C1, E1, A8, C8, E8, A15, C15, E15, A22, C22, E22, A29, C29, E29, A36, C36, E36, A43, C43, E43, A50, C50, E50") ' ...
Oui c'est ça, il manquait le "range" avant la déclaration des cellules :-s
A prèsent ça fonctionne, par contre un peu plus loin j'ai une autre ligne qui semble ne pas trop lui plaire.... une idée de la raison?
l = ActiveCell.Offset(0, 1).Value
Pour l (L minuscule) :
Tu as mis Dim l as Integer
Donc la valeur lue doit être un entier entre -32768 et 32767 ;
pour des entiers plus grands, choisir Long : Dim l As Long
Notamment car tu l'utilises ensuite comme n° de ligne :
B.Range("A" & l) = code
B.Range("B" & l) = pdt
B.Range("C" & l) = pdt2
B.Range("H" & l) = px