Je suis en train de créer une petite macro sur Excel qui me permettrais de colorer une colonne sur deux en une couleur, l'autre en une autre couleur. Cependant, pour qu'elle puisse s'adapter à toutes les longueurs de tableau, j'aimerais qu'elle s'arrête dès qu'elle trouve une case vide. J'ai donc défini une variable (compt) qui vaut 5 (le tableau commence à 5) et j'ai indiqué ensuite que je voulais sélectionner la cellule Cells(compt,1). Seulement, j'aimerais savoir s'il est possible de mettre plusieurs colonnes dans ce bout de code, quelque chose du style Cells(compt,1;3;5;7;9).
Voilà mon code (qui d'ailleurs ne fonctionne pas, Excel m'indique "Erreur de compilation : Do sans boucle") :
Sub Code()
Dim compt As Integer
'le tableau commence en A5'
compt = 5
Do While Cells(compt, 1).Value <> ""
Columns("A:A").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.349986266670736
.PatternTintAndShade = 0
End With
End Sub
Des idées pour m'aider (je débute en VBA, désolé si certaines choses paraissent évidentes pour vous et pas moi ...) ?
1./ Pour faire une sélection discontinue utilise la propriété Range plutôt que Cells. Exemple : Range("A1:B4,N3").Select te permettra de sélectionner la plage A1:B4 et la cellule N3.
2./ Il manque le Loop pour fermer ton Do While.
Cordialement, Kochii.
Le Kansas City Shuffle.. c’est quand tout le monde regarde à gauche et que tu vas à droite.
Mais du coup j'ai une question : la fonction range est elle compatible avec ce que je veux faire, c'est à dire qu'elle s'arrête quand elle rencontre un vide ? Parce qu'il faudrait que je mette quelque part le numéro de la cellule de la colonne choisie pour lui dire "quand ta cellule est vide, arrête toi"
Techniquement, elle est compatible avec ce que tu souhaites faire. Sans en être sûr à 100% il me semble que les propriétés Range et Cells ont les mêmes caractéristiques du coup tu peux très bien te servir de l'une comme de l'autre.
Et sinon rien à voir, mais dans ton code, il ne manquerait pas la ligne incrémentant la variable de ton compteur ? Car sinon je ne vois pas l'intérêt de passer par une variable compteur si cette dernière reste tout le temps à 5.
Le Kansas City Shuffle.. c’est quand tout le monde regarde à gauche et que tu vas à droite.
salut les génies qui puissent m'aider à decortiquer ce programme vba etape par etape car je suis a la maternelle de excel vbba.
Sub essai()
Dim myDate, myNom, myPrenom, mytTarget As Worksheet, mySource As Worksheet, myArray, myArraySize As Long, myCompVar, myCompteur As Long, bb As Long, i As Variant, j As Long
On Error Resume Next
Set mytarget = Sheets("Projet")
Set mySource = Sheets("Saisie")
mytarget.Activate
mytarget.Select
myDate = Range("D2") 'non déclarée pour permettre le fonctionnement correct d'IsDate
myNom = Range("D3")
myPrenom = Range("D4")
myCompVar = myNom & myPrenom 'myComVar devient la ref unique de chaque employe au cas ou plusieurs employés auraient le même nom
myCompteur = 1
If Not IsDate(myDate) Then 'la fonction IsDate ne fonctionne pas correctement si elle vérifie une variable déclarée
MsgBox "La plage 'Premier jour du mois' n'a pas été renseignée ou contient une erreur !"
End
End If
If Not WorksheetFunction.IsText(myNom) Or Not WorksheetFunction.IsText(myPrenom) Then
MsgBox "Les plages 'NOM' et/ou 'Prénom' n'ont pas été renseignées ou contiennent des erreurs !"
End
End If
mySource.Activate
Range("B2").Select
For a = 2 To 9 ' 8 itérations - Controle des colonnes B à I non vides
Pas de déterrage, crée ton propre sujet, utilise le bouton de code </> pour poster du code. Et le code a l'air d'être commenté donc explique où tu coinces (dans ton sujet).
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Le Kansas City Shuffle.. c’est quand tout le monde regarde à gauche et que tu vas à droite.
Le Kansas City Shuffle.. c’est quand tout le monde regarde à gauche et que tu vas à droite.
Pas d'aide concernant le code par MP, le forum est là pour ça :)